2017-08-12 87 views
-4

這裏發生了什麼問題?我收到錯誤Use of undeclared identifier 'answer'while循環C編碼錯誤

這裏是我的代碼:

 if (CalculatorChoice == 1) do { 
      int a; 
      int b; 
      int sum; 
      char answer; 

      printf ("You have choosen addition, please enter first number: "); 
      scanf("%d", &a); 
      printf ("Now please enter second number to addit: "); 
      scanf("%d", &b); 
      printf("The sum is: %d \n\n", sum = a+b); 

      printf("Do you want to go back to menupage? (y/n): "); 
      answer = getchar(); 
      getchar(); 
     } while(answer=='y'); 
+2

'char答案;'必須在do-while之前定義。和'answer = getchar(); getchar();' - >'getchar();回答= getchar();' – BLUEPIXY

+0

問題出自「while(answer =='y');」 :-( – SchnitteKing

+0

另外'答案== 'y''! - >'回答=' y''或'答案== '?n'' – BLUEPIXY

回答

0
if (CalculatorChoice == 1) 
    do { 
    /* ... */ 
    char answer; 

    /* ... */ 
    } while(answer=='y'); 

你聲明的變量answer環形塊,但它是從while條件,這是外部訪問循環塊。

您可以將循環體外面的聲明來解決這個:

if (CalculatorChoice == 1) { 
    char answer; 
    do { 
    /* ... */ 
    } while(answer=='y'); 
} 
+0

這既解決了問題「,而(答案==' Y 「);」 – SchnitteKing

+2

你在方括號內的'if'身體,我的回答 – Frxstrem

+0

@FrederikHansen BLUEPIXY是正確的,因爲你的性格消費是不對你的第二個數字輸入後保留下一個字符(它?可能是一個新行),然後拋出以下字符(這很可能是你的'y'或'N',看看你的問題下面的第一個評論。你需要拋出了換行,並保留下一個字符,不保留換行,並拋出了下一個字符。(和誠實,通過一個換行符消費的更健壯的方式是爲了有可能的)。*然後*,移動'answer'外循環,如下所示。 – WhozCraig

0

你的版本里面塊聲明的變量,是不是出塊的訪問

這段代碼改變位置

if (CalculatorChoice == 1) 
{ 
    char answer; 

    do { 
    int a; 
    int b; 
    int sum; 

    printf ("You have choosen addition, please enter first number: "); 
    scanf("%d", &a); 
    printf ("Now please enter second number to addit: "); 
    scanf("%d", &b); 
    printf("The sum is: %d \n\n", sum = a+b); 

    printf("Do you want to go back to menupage? (y/n): "); 
    answer = getchar(); 
    getchar(); 
    } while(answer=='y'); 
    } 
+0

請不要隨便交代碼,但請解釋解決方案,以及它與問題中已有的代碼有何區別 – Frxstrem

+0

很少有詞語準備好了。撤銷'down' –

+0

謝謝!解決了我的問題。 – SchnitteKing