我偶然发现了一段代码,它在调试别人的程序时会产生一些有趣的结果。
我创建了一个小程序来说明这种行为:
#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”。基本上它会读取第一个字符两次,就好像第一次iterator++
执行没有任何反应一样。
谁能解释为什么会这样?