基础C语言题目,这个第二个数为什么是22?

 我来答
Ma_se
2017-03-27 · TA获得超过328个赞
知道小有建树答主
回答量:403
采纳率:75%
帮助的人:106万
展开全部

++运算的处理是根据编译器来决定的,不同编译器对于++的处理是不一样的(不排除相同的情况)

我的编译器是“用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 16.00.30319.01 版”结果是15,24,8,8

得到24的运算过程是:

j = j + 1 = 6
j = j + 1 = 7
j = j + 1 = 8
q = j + j + j = 24


而gcc编译器,得到22的过程是:

j = j + 1 = 6
j = j + 1 = 7
tmp1 = j + j = 14
j = j + 1 = 8
q = tmp1 + j = 22

岔路程序缘

2017-03-27 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3402万
展开全部
它是同时取两个操作数(++j),所以第一次取得了两个7,相加得14,再取一个得到8,最终得22。
需要注意的是,类似(++i)+(++i)或(i++)+(i++)这样的表达式,在不同的电脑或不同的编译软件上得到的结果并不相同。所以,实际应用中,应该避免出现这样的表达式,以防出现预料之外的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式