gpt4 book ai didi

c - 为什么 i=2+2*i++ 给出错误的结果?

转载 作者:行者123 更新时间:2023-11-30 18:31:58 24 4
gpt4 key购买 nike

我觉得这样的表达式应该是无效的,但我能够编译它并得到答案5。最后我觉得即使真的答案也应该是4而不是5。

int main(void)
{
int i=1;

// how is the next line evaluated ie in what sequence??

i=2+2*i++;
printf("%d",i);
return 0;
}

我得到的输出是 5。我不明白它应该如何给出这个值。

最佳答案

这是未定义的行为,因为 i 在序列点之间被修改多次。例如,this compiler给出 4 作为答案,因为它将增量放在赋值之后。如果增量是在赋值之前,另一个合理的答案是 6。但是,正如您所发现的,编译器可以随意生成答案,包括 5。

参见here有关序列点和未定义行为的更多信息。

关于c - 为什么 i=2+2*i++ 给出错误的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154848/

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