他の人のプログラムをデバッグしているときに、興味深い結果を生成するコードに出くわしました。
この動作を説明するために、小さなプログラムを作成しました。
#include <stdio.h>
int main()
{
char* word = "foobar"; int i, iterator = 0;
for (i = 0; i < 6; i++ && iterator++)
printf("%c", word[iterator]);
return 0;
}
これが文字列を出力する正しい方法ではないことはわかっています。これはデモンストレーションのみを目的としています。
ここでは、出力が明らかに「foobar」であると予想していましたが、代わりに「ffooba」です。基本的に、最初の文字を 2 回読み取ります。最初にiterator++
実行された場合は何も起こりません。
なぜこれが起こるのか誰か説明できますか?