若有如下定义和语句int i=3,j;j=(++i)+(++i)+--i;执行后i,j的值分别是?为什么?

 我来答
金色潜鸟
2020-07-22 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5716万
展开全部
计算结果 与编译器有关,与编译的优化选择有关。
i 没问题 得 4。
因为 i=3; --i 得 2, (++i) 得 3, 再 (++i) 得 4。最终 i=4.
j 的结果 就不一定了。
例如: MS VC++ 编译器优化 /O1, /O2, /Og 等, j =12;
/Od 和 默认 得 j=14.
至于问 “为什么”,只有编译器 生产商 或设计者 才知道。普通使用者难猜。
程序员写程序时要 避免 这种 含义不清,多义性的语句。
例如分开写成: a=i+1; b=i+1; c=i-1; j=a+b+c; 那就无2义性。也就不必浪费时间去研究j得几,为何得几。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式