C语言自加问题

发布时间:2024-05-11 18:48 发布:上海旅游网

问题描述:

1.int i=3;
m=(++i)+(i++)+(i++);
i= m=
2.m=(++i)+(i++)+(++i);
i= m=
来点详细的步骤,谢谢了

问题解答:

恩,自己去编译一下也就知道了。反正就是前缀++先自加后运算,后缀++先运算再自加。

你的第二个程序开始的时候 i 还是等于 3吧?
我用vs运行的结果:
1. i = 6; m = 12;
2. i = 6; m = 15;

因为要先计算括号里的,第一个式子中,
++i, 先自加, i = 4, 并且返回 4;
i++, 返回4, 再自加;
第三个i++,与第二个i++是平行的, 所以他返回的也是 4, 再自加。(之所以返回4,是因为它与第二个是平行的,第二个自加无法影像它的值)

第二组式子:
大概总是先算++i, 才算i++吧,只能这样解释了。而且不知道是否和编译器有关。

同一楼。
不同编译器这个结果是不一样的!!!!!!!
你只要记住当前编译器对这个的处理值以后就OK
而且你在真正编程的时候很少这样用的。
楼主别砖牛角了!!!!浪费时间的。
有这个时间还不如花在符号优先集上。这样还好些。

++i是先自加,然后赋值。i++是先赋值,然后i在自加
1:
++i i先自加为4,++i为4.
i++ 先是i++的值为(i=)4,然后i再自加。i=5。
i++ 先是i++的值为(i=)5,然后i再自加。i=6。
最终结果:i=6,m=4+4+5=13
2:如果int i=3.对2还是有有效的话
++i i先自加为4,++i为4.
i++ 先是i++的值为(i=)4,然后i再自加。i=5。
++i 先是i自加为6.然后++i为6.
最终结果:i=6,m=4+4+6=14

1.int i=3;
m=(++i)+(i++)+(i++);
i=6 m=13
++i和i++的区别在于 ++i是先自加在使用i i++是先使用i后自加 所以 m=(++i)+(i++)+(i++);
第一个(++i)=4 第二个i++ 使用i=4 由于第二个i++这时i=5 所以第三i++ 使用 i=5
2题以此类推
2.m=(++i)+(i++)+(++i);
i=6 m=14
不同平台运行结果不同 我用VC6.0结果为
i=6 m=12
i=6 m=13

这问题天天有人问, 结果是编译器决定的, C语言标准不认可这样的语句。

热点新闻