我不明白为什么这段代码给了我乘法、除法和减法的错误结果?它给我任何乘法运算的结果是零,任何除法误差的结果,最后减法的结果总是1。
#include <stdio.h>
long operations(char x,int num1 ,int num2 );
int main(void) {
char x;
int num1 , num2;
long result;
setbuf(stdout,NULL);
result=operations(x,num1 ,num2 );
}
long operations(char x,int num1 ,int num2 )
{
printf("please enter your operation sum (1) ,subtrcation(2),mul(3),div(4) :");
scanf("%d",&x);
if (x==(1||2||3||4))
{
printf("please enter the first and second numbers : \n ");
scanf ("%d%d" ,&num1 ,&num2);
}
else
{
printf("error ") ;
}
switch (x)
{
case 1:
{
return printf("the result sum is :%d ",(num1+num2)) ;
}
case 2:
{
return printf("the result of subtraction is :%d ",(num1-num2)) ;
}
case 3:
{
return printf("the result multiblication is :%d ",(num1*num2)) ;
}
case 4:
{
return printf("the result division is :%d ",(num1/num2)) ;
}
}
}发布于 2020-02-26 19:13:12
您不能“重构”您的条件x==(1||2||3||4)
您需要显式地编写x == 1 || x == 2 || x == 3 || x == 4。
编译器理解“如果x等于1,或者x等于2,等等”。
它不理解“如果x等于1、2、3或4”
任何与零不同的数字都被认为是true,因此1||2||3||4与1相同。
如果你愿意,你可以写x >= 1 && x <= 4。您只检查下界和上界。
此外,别忘了检查num2在除法方面是否与0不同。否则,你的程序就会崩溃。
https://stackoverflow.com/questions/60420723
复制相似问题