void main()
{
int i=5,j=5,p, q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d, %d,%d, %d", p, q, i, j)
}

计算结果为什么j是22不是21,i为什么是8
- void main是很老的写法了,现在一般写
int main()
- 你复制过来的代码都是中文符号……
- i为什么是8?
因为i在p的里面++了3次,5+3=8 - j为什么是22?
这是一个典型的错误代码,在不同编译器下它的结果不同
VS下我的结果和你的就不一样
VS下是先进行3次++,j=8再进行求和,结果为24

而在gcc环境下(devc++就是gcc),此类代码是先计算前两个++,将它们加起来后再计算最后一个++,
j=5,两次++后变成7,7+7=14,再++变成8,8+14=22

如果对你有帮助,还请点个采纳,万分感谢!
printf后面没有;
还有符号是不是都是中文的
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>>
https://vip.csdn.net/askvip?utm_source=1146287632