我是C语言的初学者并在学校上课。好吧,我正在做一个项目,我们必须制作一个控制台计算器。我完成了,任务并且工作正常,但我想添加另一个“如果有效等式然后打印出来”的小片段,而不是在每种情况下不断地输入它。 当“ValidEqn”确实等于1时,它似乎有效。但是当设置了无效的等式并且默认为“default:”的情况,并且“ValidEqn”设置为“0”时,它仍然在if语句之间处理“printf”。有人可以解释一下原因吗?以及我的代码中有哪些缺陷。我非常感激。
#include <stdio.h>
int main(void)
{
float num1, num2, answer = 0.0f;
char op;
int ValidEqn = 1;
printf("Operators: ( +, -, * or x, / or \ or %)\n");
printf("Instruction: Please enter a number, operator, number\n");
printf("\nEquation: ");
scanf("%f %c %f", &num1, &op, &num2);
switch ( op )
{
case '*' :
case 'x':
answer = num1 * num2;
break;
case '+':
answer = num1 + num2;
break;
case '-':
answer = num1 - num2;
break;
case '/' :
case '\\':
case '%':
answer = num1 / num2;
break;
default:
ValidEqn = 0;
printf("You did not enter a proper equation");
break;
}
if ( ValidEqn = 1 )
{
printf("The answer of %.0f %c %.0f is %.0f\n", num1, op, num2, answer);
}
return(0);
}
答案 0 :(得分:4)
使用==
,而不是=
。如果使用=
,则修改变量,然后测试结果是true还是false。将其更改为:
if ( ValidEqn == 1 )
甚至更好,因为它被用作布尔值:
if ( ValidEqn )
答案 1 :(得分:0)
似乎有关检查平等的错字。
if ( ValidEqn = 1 )
应该是
if ( ValidEqn == 1 )
答案 2 :(得分:0)
您.....
if ( ValidEqn = 1 )
{
printf("The answer of %.0f %c %.0f is %.0f\n", num1, op, num2, answer);
}
应该......
if ( ValidEqn == 1 )
{
printf("The answer of %.0f %c %.0f is %.0f\n", num1, op, num2, answer);
}
请参阅此信息以获取更多信息.... http://www.tutorialspoint.com/cprogramming/c_operators.htm