求助:C语言------假设 i=5 P=(++i)+(++i)+(++i); 输出的i=8 p=24 怎么算的?

2025-06-24 01:04:12
推荐回答(5个)
回答1:

不对呀 我用VC算是22
用TC2算是24.
这个应该随编译器的解释而变化,
具体没有实际意义。
我们这样编
#include
#include
int main()
{
int i=5;
int p;
p = (++i);
p += (++i);
p += (++i);
//p=(++i)+(++i)+(++i);
printf("%d %d\n",i,p);
}
就没有歧义了。两个编译器都是21.

回答2:

这个是关于先自增后统一引用的问题
好像是在printf()语句中才这样吧
意思就是i先进行三次自增为8然后在引用
得结果为24
还有一种是P=8+7+6=21
具体的你看书吧
有点忘了!

回答3:

强烈建议新手听楼上的。
对于(++i)+(++i)+(++i);这种有歧义,
编译器没有定义的表达式,不要去管,也没有讨论价值。
都是谭某某害的,哎。
谭老啊谭老。。。

回答4:

是21啊,请问兄弟用的那个编译器?

回答5:

21吧。。。