发布网友
共15个回答
热心网友
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。
热心网友
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。
参考资料:百度百科-++
热心网友
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值在程序流中的变化。
参考资料:百度百科——++
热心网友
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;
参考资料来源:百度百科-++
热心网友
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。
参考资料来源:百度百科-自增自减运算符
参考资料来源:百度百科-++
热心网友
1、赋值顺序不同:
++ i 是先加后赋值;++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;
i ++ 是先赋值后加;i++ 的后面一步是自增,不是左值。
++i和i++都是分两步完成的。
2、效率不同:
比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。
3、操作完成后,值不同:
对于n=++ i ,进行操作后,n的值发生了改变,其值变成了i+1。
对于n=i++ ,进行操作后,n的值不发生改变,其值仍然为i。
百度百科-++
热心网友
一直以来,++ --语法浪费了太多人的时间。说句实在话,++ -- 在C语言中其实是一个很细节的语法,除了表达简练外,真的没有什么其它的好处了。
由于中国的C语言教程长期以来被谭浩强主宰,而谭又错误的把++ --作为一个C语言重点来教,并增加了一些难点,把本来很简单的语法,搞得复杂无比!
简单的来说,++i 和 i++,在单独使用时,就是 i=i+1。
而 a = ++i,相当于 i=i+1; a = i;
而 a = i++,相当于 a = i; i=i+1;
如果实在搞不明白++ --怎么回事,那也不是什么天塌下来的事。
因为a=++i完全可以写成 i++; a=i。
a=i++完全可以写成 a=i; i++。
而且,这也是一种好的程序风格:++ -- 语句如非特殊需要,请单独一行使用。
参考资料:http://zhidao.baidu.com/question/12961074.html
热心网友
i++是先把i的值拿来用,然后在自增1
++i是想把i自增1然后拿来用
比如:
for(i=0;i<10;i++)
i先使用,用完最后在i++
for(i=0;i<10;++i)
i先自增,然后在用
理解把!
热心网友
i++是先把i的值拿来用,然后在自增1
++i是想把i自增1然后拿来用
比如:
for(i=0;i<10;i++)
i先使用,用完最后在i++
for(i=0;i<10;++i)
i先自增,然后再用
热心网友
i++就是反回(一般来说)i值i再加1,
++i是i加一再返回i值...
如下的话:
int i=0;a=1;
a=a+i++;
cout <<"a="<<a<<endl;
a=a+(++i);
cout <<"a="<<a<<endl;
回输出
a=1
a=3
热心网友
1、单独使用时
i++和++i没有区别,都是自增1
2、进行运算时
i++是 i 先运算在加1
++i是 i 先加1再运算
热心网友
第一个是先取i的值,然后再把i加一,第二个是先把i加一,再取i的值
热心网友
刚好做题到这里,产生了疑问,现在来把自己的想法写下来。
i++翻译一下,就是先运算,后加,
++i翻译一下,就是先加,再运算,和加号顺序相应记。
比如sum+=++i;
就是i=i+1;sum=sum+i;
再比如sum+=i++;
sum=sum+i;i=i+1;
热心网友
i++ 返回原来的值,++i 返回加1后的值。
热心网友
1. ++在前表示先计算后执行
2. ++在后表示先执行后计算