首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

(++i)*(++i)=?解决方法

2012-03-11 
(++i)*(++i)?遇到个问题,在这问下,希望有高手能帮忙解惑inti2intn1(++i)*(++i)////n16intn2float(+

(++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的结果和楼主一样,我以前也遇到过这样的问题.
它的规律不太可循,在其它编译器上完全可能不是这个结果

热点排行