首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我不明白为什么这段代码给了我乘法,除法和减法的错误结果?

我不明白为什么这段代码给了我乘法,除法和减法的错误结果?
EN

Stack Overflow用户
提问于 2020-02-26 18:57:52
回答 2查看 87关注 0票数 0

我不明白为什么这段代码给了我乘法、除法和减法的错误结果?它给我任何乘法运算的结果是零,任何除法误差的结果,最后减法的结果总是1。

代码语言:javascript
运行
复制
#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)) ;

        }




    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2020-02-26 19:13:12

您不能“重构”您的条件x==(1||2||3||4)

您需要显式地编写x == 1 || x == 2 || x == 3 || x == 4

编译器理解“如果x等于1,或者x等于2,等等”。

它不理解“如果x等于1234

任何与零不同的数字都被认为是true,因此1||2||3||41相同。

如果你愿意,你可以写x >= 1 && x <= 4。您只检查下界和上界。

此外,别忘了检查num2在除法方面是否与0不同。否则,你的程序就会崩溃。

票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60420723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档