i++和++i的区别

2024-12-26 10:10:05
推荐回答(5个)
回答1:

  1. a = ++i,相当于 i=i+1; a = i;

  2. a = i++,相当于 a = i; i=i+1;       

如果有表达式 a = i++  它等价于 a = i ; i = i + 1;

如果有表达式 a = ++i  它等价于   i = i + 1; a = i;

1 首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值

2 ++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;i++ 的后面一步是自增,不是左值。

3  ++i 和i++ 的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,以及很难察觉的写脏,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。

回答2:

简单地说,都是I自加1。区别是,I++是执行完后面的语句才加1;而++I就先做I+1才执行后面的语句。

回答3:

关于自增自减运算,很多书籍没有把问题讲清楚,在C语言里是这样的:

1.后置运算:k++表示先运算,后自加。
意思是遇到k++了,我先把当前的k的值拿来参加运算,后面再去管它的自加。
那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示
语句执行完了,所以k才自加1。】

如:int k=5,b=0;
b=k++;的意思就是,先算b=k(即b=5),遇到分号;表示语句结束,k才自加1,即k变为6。

2.前置运算:++k表示先自加,后运算
这个意思就是遇到++k了,先把k的值加了1,再往后执行别的。

如:int k=5,b=0;
b=++k;的意思就是,先把k自加1,即k为6,再算b=k(即b=6)。

掌握好这两点,k--和--k也是一样的道理。

回答4:

++i是在进行运算之前使i自增1,再用增后的值进行运算
i++是在进行运算之后才使i增1,使用原值进行运算一次后,再使i自增1
你运行一下这个再体会体会就明白了:
i=1;j=1;k=1;t=1;
m1=i++ + i++;
m2=++j + ++j;
m3=k++ + ++k;
m4=++t + ++t;
(注:自增自减速运算只能对变量进行,常量和表达式不能进行该运算)

回答5:

++ i 是先 ++ 再输出,i ++ 是先输出再 ++ ,两者的执行顺序要搞清楚