鱼C论坛

 找回密码
 立即注册
查看: 1683|回复: 5

[已解决]C语言S1E12

[复制链接]
发表于 2020-5-26 10:04:44 | 显示全部楼层 |阅读模式
3鱼币
我没写bool类型也能运行  那bool有什么用?

小甲鱼的
  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.         float op1, op2;
  6.         char ch;
  7.         float result;
  8.         bool invalid = false;

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

  11.         switch (ch)
  12.         {
  13.                 case '-': op2 = -op2; // no break
  14.                 case '+': result = op1 + op2; break;
  15.                 case '*': result = op1 * op2; break;
  16.                 case '/':
  17.                         if (op2 != 0)
  18.                         {
  19.                                 result = op1 / op2;
  20.                                 break;
  21.                         }
  22.                         else
  23.                         {
  24.                                 invalid = true;
  25.                                 break;
  26.                         }
  27.         }

  28.         if (invalid)
  29.         {
  30.                 printf("除数不能为零!\n");
  31.         }
  32.         else
  33.         {
  34.                 printf("结果是:%.2f\n", result);
  35.         }

  36.         return 0;
  37. }
复制代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         char ch;
  5.         float b,q,z;
  6.        
  7.         printf("请输入式子:");
  8.         scanf("%f %c %f",&b,&ch,&q);
  9.        
  10.         switch(ch)
  11.         {
  12.                 case '+':z=b+q;break;
  13.                 case '-':z=b-q;break;
  14.                 case '*':z=b*q;break;
  15.                 case '/':if(q==0)
  16.                 {
  17.                         printf("余数不能为零。");
  18.                 }
  19.                 else
  20.                 {
  21.                         z=b/q;
  22.                 }
  23.                
  24.                 }
  25.                 printf("结果是:%.2f",z);
  26.                 return 0;
  27.                 }
复制代码



我的
最佳答案
2020-5-26 10:04:45
bool就是一个记录除数是否为零的标志,你的第二种方法也可以

最佳答案

查看完整内容

bool就是一个记录除数是否为零的标志,你的第二种方法也可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 10:04:45 | 显示全部楼层    本楼为最佳答案   
bool就是一个记录除数是否为零的标志,你的第二种方法也可以
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 08:36:34 | 显示全部楼层
都可以

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 09:00:13 | 显示全部楼层
第2种肯定是不行的,除数为0会打印未初始化内存的 z。如果想这么写的话,得多加一行 return 0;
代码见下:
  1. #include<stdio.h>


  2. int main() {
  3.     char ch;
  4.     float b, q, z;

  5.     printf("请输入式子:");
  6.     scanf("%f %c %f", &b, &ch, &q);

  7.     switch (ch) {
  8.         case '+':
  9.             z = b + q;
  10.             break;

  11.         case '-':
  12.             z = b - q;
  13.             break;

  14.         case '*':
  15.             z = b * q;
  16.             break;

  17.         case '/':
  18.             if (q == 0) {
  19.                 printf("余数不能为零。");
  20.                 return 0;
  21.             }
  22.             else {
  23.                 z = b / q;
  24.             }

  25.     }
  26.     printf("结果是:%.2f", z);
  27.     return 0;
  28. }
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 谢谢受教了

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-27 15:58:53 | 显示全部楼层
bool本质上还是用于增强代码可读性的,就像true/false 肯定比1和0让人更好懂(比如while(true){...} );
如果进行反汇编,会发现高级语言的流程控制也是基于bool值进行的(先比较再进行jnz之类的跳转),
如果要增强代码可读性建议用bool值或者自己做相关宏定义;
简而言之,这是可选项,并非必选。
====================================================
还有建议楼主声明变量的时候进行相关初始化,野指针、野变量危害很大!!!

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
维德 + 5 + 5 + 3 谢谢 受教了

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-27 20:14:07 | 显示全部楼层
KevinHu 发表于 2020-5-26 10:04
bool就是一个记录除数是否为零的标志,你的第二种方法也可以

谢了 man
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 20:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表