2016-10-19 4 views
0

私のコードがループしない理由はわかりません。私の目的は、ユーザーに正しい番号(1)を入力させることです。そうしないと、ユーザーは「1」を入力するまで番号を入力するようにコードに指示し続けます。私は自分のコードを実行した後、ユーザーが間違った番号を入力した場合、私のコードがなぜユーザーに番号を入力し続けるように求めないのか分かりません。ここに私のコードです。ループが途切れることができない

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int answer =0; 
    for(; ;) 
    { 
     printf("please enter the password "); 
     scanf("%d",&answer); 
     if(answer == 1) 
     printf("correct"); 
     break; 
    } 

} 
+4

'if'の後に2つ(またはそれ以上)のステートメントを入れるには、ステートメントを中括弧で囲む必要があります:' {} ' – user3386109

+0

私のダムブックには" ifステートメントを中括弧で囲む必要がある場合:{} " –

+1

問題が解決しました!ご協力ありがとうございました!!! –

答えて

0

追加のかっこを配置するのを忘れ:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int answer = 0; 
    while (answer != 0) 
    { 
     printf("please enter the password "); 
     scanf("%d",&answer); 
     if(answer == 1) { 
      printf("correct"); 
      break; 
     } 
    } 
} 
2

あなたは何をあなたがのためにループ内でやっていることをやっていません。中括弧がなければ、if文は1つの文だけをカバーするので、if文内の条件が真か偽であっても、ブレークに当たるでしょう。

これはあなたのコードが今やっていることです。

for(; ;) 
{ 
    printf("please enter the password "); 
    scanf("%d",&answer); 
    if(answer == 1) 
    { 
     printf("correct"); 
    } 
    break; 
} 

あなたが実際にしたいことはこれです:

ので
for(; ;) 
{ 
    printf("please enter the password "); 
    scanf("%d",&answer); 
    if(answer == 1) 
    { 
     printf("correct"); 
     break; 
    } 

} 

あなたのコードで両方のステートメントを処理する場合、それは次のようにに見えるにもかかわらず、 、そうではありません。 Apple's goto failには、このようなバグの有名な例があります。それは、いくつかのコーディングスタイルが、ifs、else ifs、およびelsesの周りに角括弧を必要とするのは、それがただ1つの文であっても、なぜ必要なのかを知っておくべきことです。

関連する問題