2014-01-29 26 views
1

我是C語言的初學者,在學校學習課程。那麼我正在做一個項目,我們必須製作一個控制檯計算器。我完成了任務並且工作正常,但是我想添加另一個「如果有效的等式然後打印出」的小片段,而不是不斷地在每種情況下輸入它。 這似乎工作,當「ValidEqn」等於一。但是,如果設置了一個無效的等式,並且它默認爲「default:」大小寫,並且「ValidEqn」設置爲「0」,它仍會處理if語句之間的「printf」。有人能解釋爲什麼嗎?以及我的代碼中有哪些缺陷。我非常感謝。C(控制檯計算器)如果先前設置爲false,仍然處理語句

 #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); 
     } 

回答

4

使用==而不是=。如果使用=,那麼您正在修改該變量,然後測試結果是true還是false。將其更改爲:

if (ValidEqn == 1) 

甚至更​​好,因爲它是作爲一個布爾值:

if (ValidEqn) 
+0

謝謝你解釋它! – YourFriend

0

似乎錯字有關檢查平等。

if (ValidEqn = 1) 

應該

if (ValidEqn == 1) 
相關問題