m0_66394588 2022-02-06 23:52 采纳率: 91.5%
浏览 49
已结题

关于一串代码有些问题想要问,问题都注释在代码后面了

#include <stdio.h>
#include <stdbool.h>

int main()
{
        float op1, op2;
        char ch;
        float result;
        bool invalid = false;//为什么用的是bool型的变量定义的 

    printf("请输入式子:");
    scanf("%f %c %f", &op1, &ch, &op2);

    switch (ch)
    {
            case '-': op2 = -op2; //为什么这里没有break 
            case '+': result = op1 + op2; break;
            case '*': result = op1 * op2; break;
            case '/':
                    if (op2 != 0)
                    {
                            result = op1 / op2;
                            break;
                    }
                    else
                    {
                            invalid = true;//这里的 teue用1也可以的吧 
                            break;
                    }
    }

    if (invalid)
    {
            printf("除数不能为零!\n");
    }
    else
    {
            printf("结果是:%.2f\n", result);
    }

    return 0;

}



  • 写回答

2条回答 默认 最新

  • 愿此后再无WA 新星创作者: python技术领域 2022-02-07 00:08
    关注

    非0即为真,你可以用任意字符取代判断条件为布尔类型的值。但是规范的判断条件里面类型都是布尔类型的,所以还是建议用布尔类型作为判断条件的类型。为什么没有break?没有break的话会继续执行下面的case直到全部执行完毕或者遇到break为止。举个例子:输入3-5那么它的计算过程是3+(-5)。不懂可以追问,望采纳!吐槽一下,手机答题真难受

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月16日
  • 已采纳回答 2月8日
  • 创建了问题 2月6日