次のコードを検討してください。
int i;
while(i=0)
printf("Hello");
現在、一般的に言えば、 i=0 はチェック対象であり、チェック対象ではassignment
ありません。しかし、コンパイラは警告を出してそれを許可し、正しく評価します (print ステートメントを実行しません)。condition
while
GCC
なんで?私は通常、真理値の括弧を使用しますが、後輩は私が間違っていると感じており、これに括弧を付ける本当の理由はありません!
編集:「実際の」疑いをゼロにする、次のテストケースを検討してください
int callme(){
return 0;
}
int main(int argc,char*argv[]){
int c;
while(c = callme()){
printf("Calling...\n");
}
return 0;
}