C(控制台计算器)仍在处理if语句之前设置为false

时间:2014-01-29 02:48:07

标签: c

我是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);
        }

3 个答案:

答案 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