int i=1,j=2; int k=i+++j;

891人阅读 评论(0) 收藏 举报
分类:
因为运算符优先级为++大于+
所以第二条语句应该是k=(i++)+j
分解为下面的步骤
1.i+j;(由于i++是先使用i值在表达式中进行运算,再自加1)
2.k=第1步的结果3;

3.i++;(i从1自加为2)


这样,再深究一点:

为什么 j=++i+++i+++i 输出j是10?

j=(++i)+(++i)+(++i)=(((++i)+(++i))+(++i))
计算机在计算j=(a+b)+(c+d)+(e+f)先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(e+f)=j;
所以计算机先计算了两个++i(前两项i为3,++i先于+号);也就是j=3+3;然后j=6+(++i)(最后的i为4),也就是j=6+4=10。


首先++i=2,再计算第二个++i=3,此时计算机里i=3,第一个i也=3,第二个i也=3,因为计算机里只有一个i,因此原式=(3+3)+4=10,记住计算机里只有一个i,算第二个时第一个i改变了

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:701260次
    • 积分:11969
    • 等级:
    • 排名:第1217名
    • 原创:390篇
    • 转载:384篇
    • 译文:6篇
    • 评论:204条
    博客专栏
    友情链接
    文章分类
    最新评论