• 締切済み

while文の条件

参考書でC言語を勉強しておりますが、タイトルの件で分からないことがあります。 #include <stdio.h> #include <string.h> void main(void) { char *p = "stop"; char str[80]; do { printf("文字列を入力してください:"); gets(str); }while(strcmp(p , str)); } while文は条件が真(0でない)の場合に繰り返し、偽(0)の場合に抜けるという認識なんですが、上記のwhile文だと、strcmp()の戻り値が0の場合(偽)に繰り返しを抜けます。 なぜなのか分かりません。 どなたか教えてください。

みんなの回答

noname#70673
noname#70673
回答No.1

>while文は条件が真(0でない)の場合に繰り返し、偽(0)の場合に抜けるという認識なんですが、 その通りです。合っています。 >上記のwhile文だと、strcmp()の戻り値が0の場合(偽)に繰り返しを抜けます。 上記の認識に則した動作だと思ういます。 上記の例では、"stop"の文字列を入力した時、strcmp()関数は"0"(ブール代数の偽)が返され、while文のループを抜ける、というプログラムです。それ以外の文字列を入力した場合、gets()をひたすら繰り返すことになります(実際に応用する場合はgets()関数の後、str[]を処理する一連のコードが入ることになると思います)。 テスト的にコンパイルして動作をもう一度確認してみましょう。

関連するQ&A

専門家に質問してみよう