C语言S1E12
我没写bool类型也能运行那bool有什么用?小甲鱼的
#include <stdio.h>
#include <stdbool.h>
int main()
{
float op1, op2;
char ch;
float result;
bool invalid = false;
printf("请输入式子:");
scanf("%f %c %f", &op1, &ch, &op2);
switch (ch)
{
case '-': op2 = -op2; // no break
case '+': result = op1 + op2; break;
case '*': result = op1 * op2; break;
case '/':
if (op2 != 0)
{
result = op1 / op2;
break;
}
else
{
invalid = true;
break;
}
}
if (invalid)
{
printf("除数不能为零!\n");
}
else
{
printf("结果是:%.2f\n", result);
}
return 0;
}#include<stdio.h>
int main()
{
char ch;
float b,q,z;
printf("请输入式子:");
scanf("%f %c %f",&b,&ch,&q);
switch(ch)
{
case '+':z=b+q;break;
case '-':z=b-q;break;
case '*':z=b*q;break;
case '/':if(q==0)
{
printf("余数不能为零。");
}
else
{
z=b/q;
}
}
printf("结果是:%.2f",z);
return 0;
}
我的
bool就是一个记录除数是否为零的标志,你的第二种方法也可以{:10_256:} 都可以{:10_256:} 第2种肯定是不行的,除数为0会打印未初始化内存的 z。如果想这么写的话,得多加一行 return 0;
代码见下:#include<stdio.h>
int main() {
char ch;
float b, q, z;
printf("请输入式子:");
scanf("%f %c %f", &b, &ch, &q);
switch (ch) {
case '+':
z = b + q;
break;
case '-':
z = b - q;
break;
case '*':
z = b * q;
break;
case '/':
if (q == 0) {
printf("余数不能为零。");
return 0;
}
else {
z = b / q;
}
}
printf("结果是:%.2f", z);
return 0;
} bool本质上还是用于增强代码可读性的,就像true/false 肯定比1和0让人更好懂(比如while(true){...} );
如果进行反汇编,会发现高级语言的流程控制也是基于bool值进行的(先比较再进行jnz之类的跳转),
如果要增强代码可读性建议用bool值或者自己做相关宏定义;
简而言之,这是可选项,并非必选。
====================================================
还有建议楼主声明变量的时候进行相关初始化,野指针、野变量危害很大!!!
KevinHu 发表于 2020-5-26 10:04
bool就是一个记录除数是否为零的标志,你的第二种方法也可以
谢了 man
页:
[1]