i++和++i命令有什么区别?

 我来答
Zero天秤sss
高粉答主

推荐于2019-09-08 · 说的都是干货,快来关注
知道小有建树答主
回答量:99
采纳率:100%
帮助的人:1.8万
展开全部

i++ 与 ++i 的主要区别有两个:

一、 i++ 返回原来的值,++i 返回加1后的值。

例如在Java中:

public class Test{

public static void main(String [] args){

int i = 1;

int s = ++i;

int x= i++;

System.out.printLn(i);

System.out.printLn(s);

System.out.printLn(x);

}

}

答案:“3, 2, 2”。

解析:i++改变的只有i,++i既改变i,又改变赋值变量;

二、 i++ 不能作为左值,而++i 可以。

如:左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。

但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。

比如:

int i = 0;

int *p1 = &(++i);//正确

int *p2 = &(i++);//错误

++i = 1;//正确

i++ = 1;//错误

扩展资料

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

使用具体解释:

解释一:++i的返回值是i+1,并且i=i+1;

i++的返回值是i,并且i=i+1;

也就是如果i=1,那么j=++i=2,j=i++=1。

解释二:i=1;

如果y=++i;

就需要把++和i相加的数值赋给y也就是2;

如果y=i++的话;

那没饿y的值就是1;

因为++在后面的话这种情况要先赋值所以等于1。

子不语望长安
高粉答主

推荐于2019-09-10 · 说的都是干货,快来关注
知道答主
回答量:37
采纳率:0%
帮助的人:3.2万
展开全部

i++和++i命令的区别有:


1、赋值顺序不同


++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。

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


形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。


2、单独使用时一样


独立使用时++i 和 i++二者效果一样,就是 i=i+1。表达式中i++取i的值参与运算,而++i取i+1的值参与运算。举例 a = ++i,相当于 i=i+1; a = i; a = i++,相当于 a = i; i=i+1。


3、效率不同


比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。


扩展资料:


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


使用具体解释:


解释一:++i的返回值是i+1,并且i=i+1;


i++的返回值是i,并且i=i+1;


也就是如果i=1,那么j=++i=2,j=i++=1。


解释二:i=1;


如果y=++i;


就需要把++和i相加的数值赋给y也就是2;


如果y=i++的话;


那y的值就是1;


因为++在后面的话这种情况要先赋值所以等于1。

参考资料:百度百科-++

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
硅谷创业快讯
高粉答主

推荐于2019-10-18 · 每个回答都超有意思的
知道答主
回答量:55
采纳率:100%
帮助的人:2.3万
展开全部

i++和++i命令都是C语言中的语法,i++和++i命令i++和++i命令的区别有:

1、赋值顺序不同

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

形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。

2、单独使用时一样

独立使用时++i 和 i++二者效果一样,就是 i=i+1。表达式中i++取i的值参与运算,而++i取i+1的值参与运算。举例 a = ++i,相当于 i=i+1; a = i; a = i++,相当于 a = i; i=i+1。

3、效率不同

比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。

参考资料:百度百科——++

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零上尘C
高粉答主

推荐于2019-10-29 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1093
采纳率:100%
帮助的人:31.6万
展开全部

i++和++i命令的区别:

1、i++是先使用i,再赋值计算,即就是在计算程序时,先把 i 的值拿来用,然后在自增1。

2、++i是先赋值计算,再使用,即就是在计算程序时,是想把 i 自增1然后拿来用。

3、 ++i,在字节码层面,会先进行iinc,也就是执行自增,然后load变量。

4、 i++,则是,先load变量,后自增(因为已经load,所以本次自增,并不会影响已经load的变量值)。

比如:

for(i=0;i<10;i++)

i先使用,用完最后在i++

for(i=0;i<10;++i)

i先自增,然后再用。

扩展资料:

i++和++i命令在C语言中代码的表示:

++i相当于下列代码:

i += 1;

return i;

i++相当于下列代码:

j = i;

i += 1;

return j;

参考资料来源:百度百科-++

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虫心菜
高粉答主

推荐于2019-11-17 · 每个回答都超有意思的
知道答主
回答量:23
采纳率:0%
帮助的人:1万
展开全部

i++和++i命令的区别有:

1、赋值顺序不同

++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。

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

形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。

2、效率不同

比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。

3、 i++ 不能作为左值,而++i 可以。

左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。

但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。

比如:

int i = 0;

int *p1 = &(++i);//正确

int *p2 = &(i++);//错误

++i = 1;//正确

i++ = 1;//错误

扩展资料

当i=5时,s=(++i)+(++i)和s=(i++)+(i++)的值:

1、当i=5时,s=(++i)+(++i)=13 先算第一个(++i),++在前面,就把i先加1再把赋值,即先把i变为6然后再得出(++i)的值为6,这时i已经变为6了,

再计算第二个(++i),++在前面也是先把i加1后再赋值,不过这时的i已经为6了,第一步的时候把i变成6了的,然后加1的话就变成7了,所以第二个(++i)的值为7,s=(++i)+(++i)=6+7=13。

2、s=(i++)+(i++)=11 先算第一个(i++),i在前面,就先赋值再把i加1,即(i++)的值为5,i的值变为6,第二个(i++),i在前面,先赋值再把i加1,这个时候的i已经为6了,即(i++)的值为6,而i已经变为7了。所以s=(i++)+(i++)=5+6=11。

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

参考资料来源:百度百科-++

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(18)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式