bool invalid
#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;
}
标红的不知道有什么作用,看不太懂,或者可以给我个知识链接,让我研究研究 红色标记的部分是在代码中定义了一个名为"invalid"的bool类型变量,然后又在全局范围内重新定义了同名的变量。这被称为"变量重定义",是不允许的。
实际上,这里的全局的bool类型变量"invalid"是多余的,不需要额外定义。在main函数中已经定义了一个局部的bool类型变量"invalid",可以直接使用它。因此,你可以删除掉全局的bool类型变量"invalid"的定义语句,将switch语句中的"invalid = true;"改为"invalid = false;"即可。
下面是更新后的代码:
#include <stdio.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;
}
希望这可以解决你的问题!如果还有其他问题,随时都可以问我。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]