gpt4 book ai didi

C程序有趣的行为

转载 作者:太空狗 更新时间:2023-10-29 17:15:13 24 4
gpt4 key购买 nike

我在调试别人的程序时偶然发现了一段代码,它产生了一些有趣的结果。

我创建了一个小程序来说明这种行为:

#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++ 时没有任何反应。

谁能解释为什么会这样?

最佳答案

问题是 iterator++ 实际上不是第一次执行。 ++ 运算符返回变量的当前值,然后 将其递增,因此第一次执行时,i++ 将等于 0&&短路,所以iterator++第一次没有执行。

要解决此问题,您可以使用无条件评估两者的逗号运算符,而不是短路 &&

关于C程序有趣的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12650668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com