(++i)*(++i)=?
遇到个问题,在这问下,希望有高手能帮忙解惑
int i=2;
int n1=(++i)*(++i);////n=16
int n2=float(++i)*(++i);///n2=12
int n3=(++i)*(++i)*(++i);///n3=80;
[解决办法]
汗 有点难度~~~~~~~~~~~``````
[解决办法]
不对吧,n2应该也是16,n3应该是125
[解决办法]
dep c++的结果 16 30 576
vc2003 的结果16 36 729
建议楼组lz别把精力用在这个无聊程序身上 毫无意义
[解决办法]
是器相的,面有定。
[解决办法]
int n1=(++i)*(++i);////n=16 这个是两个i都先自加两次再相乘
int n2=float(++i)*(++i);///n2=12 这个是一个i自加了一次,另一个自加了两次,再相乘
int n3=(++i)*(++i)*(++i);///n3=80; 后两个自加两次,第一个自加三次,再相乘
楼主的这个问题是和编译器有关的,不同的编译器会给出不同的值,因为它们的计算顺序不同,有的是从左至右,有的是从右至左,我的机器上VC6的结果和楼主一样,我以前也遇到过这样的问题.
它的规律不太可循,在其它编译器上完全可能不是这个结果