gpt4 book ai didi

c - 为什么我的计算器函数没有返回正确的结果?

转载 作者:行者123 更新时间:2023-11-30 15:16:55 25 4
gpt4 key购买 nike

我是 C 编程语言新手。我正在创建一个简单的计算器程序,但由于某种原因我的函数没有返回正确的结果。这是我的程序:

#include <stdio.h>
#include <math.h>
#include <complex.h>
#include <string.h>


int calculator(int x, char operator, int y);
int main()
{
int x;
char operator;
int y;

printf("Enter an arithmetic experession: ");
scanf("%d%s%d", &x, &operator, &y);

int result = calculator(x, operator, y);

if(result == -1)
{
printf("Error! Try again!");
}
else
{

printf("%d", result);
}
return 0;


}
int calculator(int x, char operator, int y)
{
int result = 0;
if(y = 0)
{
return -1;
}

if(operator == '+')
{
result = x + y;
}
else if(operator == '-')
{
result = x - y;
}
else if(operator == '*')
{
result = x * y;
}
else if(operator == '/')
{
result = x / y;
}
else if(operator == '%')
{
result = x % y;
}
else
{
return -1;
}

return result;


}

所以当我运行这个程序时,它会要求一个算术表达式。如果我输入 5 + 3,它只返回 5!经过几次测试后,似乎无论如何它都只返回第一个操作数。我想这是一件非常小的事情,但我不明白我错过了什么。

最佳答案

两个问题。第一个是您在表达式中阅读的位置:

scanf("%d%s%d", &x, &operator, &y);

operator 是一个char,但您使用的是用于字符串的%s 格式说明符。这最终将运算符放入 operator 中,但随后将 NULL 终止符添加到内存中的下一个字节。由于该字节不是运算符的一部分,因此这会导致未定义的行为。

您想使用 %c 来读取单个字符。

第二个是对 y 进行零检查的位置:

if(y = 0)

这是一个作业,而不是比较。将值 0 分配给 y,然后将 y 计算为 bool 值,最终结果为 false。这就是为什么所有表达式的计算结果都如同 y 为 0。

将其更改为作业:

if(y == 0)

关于c - 为什么我的计算器函数没有返回正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32814223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com