i++和++i的区别
i++和++i的区别如下:
1、赋值顺序不同。
++i是先加后赋值;i++是先赋值后加;++i和i++都是分两步完成的。
因为++i是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i=a=b,即++i是一个左值;i++的后面一步是自增,不是左值。
2、效率不同。
比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。
一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。
3、i++不能作为左值,而++i可以。
左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。
i++和++i的解释:
i++即后加加,原理是:先自增,然后返回自增之前的值。
++i即前加加,原理是:先自增,然后返回自增之后的值。
(都是先自增,然后反回值)
一个变量也是表达式,多个表达式的加减法运算都是从左到右进行的。
真实编程中,我们不会写这些复杂的i++代码,但是在考试,笔试中可能有关于i++的用法不同判断。
自增(++)自减(--)运算符的作用是使变量的值加1或者减1,例如:
++i,--i(在使用i之前,先使i的值加(减)1)
i++,--i(在使用i之后,使i的值加(减)1)
粗略的看,++i和i++的作用相当于i=i+1。但++i和i++的不同之处在于:++i是先执行i=i+1,再使用i的值;而i++是先使用i的值,再执行i=i+1。如果i的原值等于3,请分析下面的赋值语句。
1、j=++i;(i的值先变为4,再赋值给j,j的值为4)
2、j=i++;(现将i的值3赋给j,j的值为3,然后i变为4)
又例如:
i=3
printf(“%d”,++i);
输入为4,若改为
printf(“%d”,i++)
则输出为3。
自增自减运算符常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针指向下一个地址。
i++是后自增运算符,它的运算顺序是先使用i的值,然后再将i的值加1。例如,如果i的值为5,则执行i++后,i的值变为6,但是在执行i++之前,i的值仍然是5,因此i++的结果为5。
++i是前自增运算符,它的运算顺序是先将i的值加1,然后再使用i的值。例如,如果i的值为5,则执行++i后,i的值变为6,而且在执行++i之后,i的值已经变为6,因此++i的结果为6。
在程序中,i++和++i的使用取决于具体的需求。如果需要先使用i的值然后再将i加1,可以使用i++;如果需要先将i加1然后再使用i的值,可以使用++i。
i++表示先使用i的当前值,然后再将i的值加1。例如,如果i的值为5,那么i++的结果为5,并且i的值变为6。
++i表示先将i的值加1,然后再使用加1后的值。例如,如果i的值为5,那么++i的结果为6,i的值也会变为6。
举个例子,假设i的初始值为5,那么执行操作i++时,表达式的值为5,i的值变为6;而执行++i时,表达式的值为6,i的值也为6。