bshy.net
当前位置:首页>>关于j=(i++)*(++i)+(i––)*(––i)的资料>>

j=(i++)*(++i)+(i––)*(––i)

一般编译器是这样处理的,设置两个临时变量a、b,然后: a=(i)*(++i); b=(i)*(--i); j=a+b; i++; i--; 就是说如果i原来是3话,最后j==25。但并非所有编译器都这么处理,所以不同编译器常常会有不同结果。

你想知道什么?

答案与编译器品种有关,与编译时的优化处理有关。 如果作 优化处理,VC++ 编译器 /O2 (最大速度)或 /O1 优化 或 /Og 优化, 得 j=24 计算方法 huidouer 已详细说明。 VC++ 编译器 不优化 (默认方法)/Od 得 j=22 手算: int i=3,j=(++i)+(++i)...

i的初始值是2 j = (++i)+(++i)+(++i);是将(++i)+(++i)+(++i)的结果赋值给j 对于不同的编译器, (++i)+(++i)+(++i)执行的顺序可能不同 但对于本题不影响,我们就按从左往右的顺序继续吧 刚编译了下,发现是这么算的 第一步计算:(++i)+(++i) 优...

此时的 j=6; 第一次循环 j=3; 第二次循环 j=5; 第三次循环 j=6;

应该是18与21吧。 ++在后是先用再加,++在前是先加在用 所以 n = 5+6+7, m=6+7+8

int i=3;k=(++i)+(++i)+(i++); k=15,i=6; int i=3;k=(++i)+(++i)+(++i); k=18,i=6 int i=3;k=(i++)+(i++)+(i++); k=9,i=6 i=6就不用说了,不管哪种,i都是加了三次,由3到最后的6 主要区别在于i++是先运算,后执行i=i+1 ++i是先执行i=i+1,后运算...

是这样的:在c语言中++i的运算优先级高于i++和*,--i的运算优先级也是高于i--和*的,所以:(i++*++i+i--*--i)这个表达式是先开始执行++i的操作,那么i的值就变成4了,所以i++*++i就是实质4++*4=16,因为这个表达式是同一个,所以第一个i++还不...

i=5,j=6 int i=1,j=10;//初始化变量 do if(i++>--j) contiue;//do循环,i是后自增,就是先比较再加一,j是先自减,就是先减一再比较。 while (i

这个。。。 哪本书的上的例子。 答案根据编译器不同而不同,最好不要这样写。 理解这个需要理解(;)顺序点。

网站首页 | 网站地图
All rights reserved Powered by www.bshy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com