【发布时间】:2012-09-29 06:57:06
【问题描述】:
我偶然发现了一段代码,它在调试别人的程序时会产生一些有趣的结果。
我创建了一个小程序来说明这种行为:
#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++ 时没有任何反应。
谁能解释为什么会这样?
【问题讨论】:
-
i++ && iterator++->i++, iterator++ -
这个问题可能很基础,但问得很完美。
-
就像我说的,我知道如何正确地做,我只是想找出为什么上面的代码没有按我预期的方式工作。