C言語の、while(1)無限ループの抜け方について質問です。
現在C言語を独学で勉強中なのですが、読んでいる参考書で下記の様なプログラムがあります。
lang
1 2#include <stdio.h> 3 4#define NUMBER 5 5#define FAILED -1 6 7int search(const int v[], int key , int n) 8{ 9 int i = 0; 10 11 while (1) { 12 if (i == n) { 13 return FAILED; 14 } 15 if (v[i] == key) { 16 return i; 17 } 18 19 i++; 20 } 21} 22int main (void) 23{ 24 int i, ky , idx; 25 int vx[NUMBER]; 26 27 for (i = 0; i < NUMBER; i++) { 28 printf("vx[%d]:", i); 29 scanf("%d", &vx[i]); 30 } 31 32 printf("探す値:"); 33 scanf("%d", &ky); 34 35 idx = search(vx, ky, NUMBER); 36 37 if (idx == FAILED) { 38 puts("\a探索に失敗!"); 39 } 40 else { 41 printf("%dは%d番目にあります。 \n", ky , idx + 1); 42 } 43 return 0; 44} 45 46コード
この場合のwhile(1)が無限ループなのはわかるのですが、while(1)がbreakなしで抜けれるものなのでしょうか?
だとしたらif文の条件式が真で、return FAILED(または i)が呼び出し元に値を返すタイミングで無限ループから抜けているのでしょうか?
ちなみにプログラミング自体は正常に動きます。
ご回答よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/15 16:39