int i=2,k;k=(++i)+(++i)+(++i);k等于多少?为什么?

 我来答
梦魂天心Bp
2019-06-03 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.3万
采纳率:34%
帮助的人:652万
展开全部
int
i=2,k;
k=(++i)+(++i)+(++i);
可以转换成:
int
i=2,
k;
我原来理解错误,并不是++i一定在表达式前面执行,而是表达式运行时,需要“调用”到它时,才会在“调用”前自增。
如上面的例子:
我们先不管++,则表达式变成:k=i+i+i;
+号是左结合,表达式运算第一步是i+i,这时第1,2个i都有++符号,先运行2个++,i=i+2=4了,然后运行i+i=4+4=8,然后再运行8+i,又要调用一个有++符号的i,这时还是先++i,i=i+1=5,运行结果变成8+5=13。
还有什么不能理解的吗?
再给你个例子:
#include
int
main()
{
int
i=3;
printf("%d,%d\n",(++i)+(++i)+(++i),++i);
return
0;
}
输出结果是:19,4
怎么来的呢?
printf中后面一个%d是先执行的,调用++i,i=i+1=4,所以为4。
然后执行前面一个%d,
6+6+7=19,如我上面所说,只不过i=4是初始值
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式