谁能详细的给我讲一下i++,++i,i--,--i的区别阿

最好能举个例子

1、运算符类型不同:

i++使用的是后置自增运算符,++i使用的是前置自增运算符,i--使用的是后置自减运算符,--i使用的是前置自减运算符。递减操作符是“--”,意为“减少一个单位”;递增操作符是“++”,意为“增加一个单位”。

2、运算规则不同:

++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。自减运算符--与之类似,只不过是变加为减而已,即--i表示,i自减1后参与其它运算,而i-- 则i参与运算后,i的值再自减1个单位。

扩展资料:

特殊情况:

1、在同一条语句中,被操作的数出现多次是可以通过编译的,但是其在C++ Standard等语言标准中被定义为"Undefined behavior"(不确定的行为),即不同的编译器或编译器版本所编译得到的机器码可能不尽相同。

2、不在同一条语句中使被操作的数出现多次,这不仅仅将导致程序的含义难以理解,可读性大幅降低,同时可能导致不同的编译器或编译器版本得到不同的结果。前置后置区别的举例: a = i++; 相当于 a = i; i++; a = ++i; 相当于 i++; a = i;

参考资料来源:百度百科-运算符

参考资料来源:百度百科-自增自减运算符

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-15
1.后置运算:i++表示先运算,后自加。
意思是遇到i++了,我先把当前的k的值拿来参加运算,后面再去管它的自加。
那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示
语句执行完了,所以i才自加1。】
如:int i=5,b=0;
b=i++;的意思就是,先算b=i(即b=5),遇到分号;表示语句结束,i才自加1,即i变为6。

2.前置运算:++i表示先自加,后运算
这个意思就是遇到++i了,先把k的值加了1,再往后执行别的。
如:int i=5,b=0;
b=++i;的意思就是,先把i自加1,即i为6,再算b=i(即b=6)。

掌握好这两点,i--和--i也是一样的道理。
第2个回答  2009-03-30
i++,i--:用了i,再把i重新赋值~假如,i=1;a=i++,那么现在的a是1,而i值变为了2,如果是a=i--的话,那么a还是1,但i变成了0;
++i,--i:就是刚好相反,先把i赋了值再用i~假如,i=1;a=++i,那么现在的a是2,i也是2,要是a=--i的话,现在的a就是0,i也是0;
第3个回答  2009-03-30
i=5;
b=i++;
执行过后b=5,i=6
i=5;
b=++i;
执行过后b=6,i=6

就是说i++先执行语句,再自增
++i先自增,再执行语句

i--,--i同理
第4个回答  2009-03-30
对i++,i--,++i,--i的易解,在此举一例子详解:
main( )
{
int x,y,z;
x=y=2;z=3;
y=x++-1;printf("%d\t%d\t",x,y); /*x=3,y=1,后置++,先把x赋值给y,再做运算,而x的值无论是前还是后置都加1*/
y=++x-1;printf("%d\t%d\t",x,y);/*x=4,y=3,前置++,先把x加1后赋值给y,然后做运算(此行x初值是上行的终值=3)*/
y=z--+1;printf("%d\t%d\t",z,y); /*z=2,y=4,同上理可知*/
y=--z+1;printf("%d\t%d\t",z,y); /*z=1,y=2,同理可证*/
getch(); }

看懂了吧本回答被提问者采纳
相似回答