This is bill的专属博客

仅作研究用途,侵删

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

因为运算符优先级为++大于+
所以第二条语句应该是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改变了

阅读更多
版权声明:欢迎转载,注明出处就好!如果不喜欢请留言说明原因再踩!谢谢,我也可以知道原因,不断进步!! https://blog.csdn.net/Scythe666/article/details/46819491
个人分类: c/c++
上一篇poj 2665
下一篇浮点数原理探究
想对作者说点什么? 我来说一句

哥德巴赫猜想java程序

2013年04月26日 1KB 下载

八皇后c语言程序

2015年05月19日 2KB 下载

matrixMultiply

2010年04月01日 3KB 下载

着色问题的回溯解法(C语言)

2011年04月18日 219KB 下载

倒三角 C++ 程序

2012年08月09日 202B 下载

mergesort算法例子

2010年01月03日 1KB 下载

C 八皇后问题,有注释

2009年12月23日 1KB 下载

没有更多推荐了,返回首页

关闭
关闭