gpt4 book ai didi

c - 先递增后乘法或先递增后乘法会发生什么?

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

该程序的输出结果为 4.00000。我不知道先将 2 与 c 相乘然后再进行增量,还是将 2 与增加的 c 相乘会发生什么?

int main()        
{
int c=1;
c=c+2*c++;
printf("\n%f", c);
return 0;
}

最佳答案

这会调用未定义的行为,这意味着您的程序中可能会发生任何事情。

请参阅 C99 规范,特别是J.2 未定义行为:

The behavior is undefined in the following circumstances: [...]

  • Between two sequence points, an object is modified more than once, or is modified and the prior value is read other than to determine the value to be stored (6.5).

根据经验,“两个序列点之间”是指结束语句的两个分号 (;) 之间。摘录中提到的“对象”是变量c

有了这个,我们可以清楚地看到对象在两个序列点之间被修改了两次。它在表达式 c++ 求值期间和赋值期间修改一次。

关于c - 先递增后乘法或先递增后乘法会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127968/

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