连加x++ 的问题

 如题

 int x=8,k;

k=(x++)+(x++)+(x++);

问最后 k 的值和 x的值各是多少

这个问题争议好大,也好无聊,但最后去测试大家的答案都对了,这是怎么回事呢?

这里列出 C# 和C/C++的比较

 先明确一点x++ 的意思是 先使用完x然后x自加1,对吧,这里有个问题,x什么时候才是使用完呢?

看c#的

k=(x++)+(x++)+(x++);这里 () 和x++ 的运算优先级是一样的,所以当x跳出()后就表示x已经使用完了,那么它可以加1了

所以就成了k=8+9+10  此时最后一个括号的x也使用完了那么它要再加1, 所以 k=27,x=11

看 c 的

k=(x++)+(x++)+(x++);这里 () 的运算优先级别比x++ 大一级,所以当x跳出第一个()后表示它还没使用完呢,接着连续跳出两个(),

所以就成了k=8+8+8  三个括号跳出来后x才是使用完了,这个时候它才加1,因为有三个++ 所以必须加三次,所以 k=24,i=11

 

鄙人浅解,但是问的人好郁闷,我也好郁闷!

还有像 k=(x++)+(++x)+(x++);k=(++x)+(++x)+(x++);等等的问题都是一样,自己跑一下程序等于多少就多少,何必追究那么多呢!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值