黑马程序员技术交流社区
标题:
i++和++i????
[打印本页]
作者:
付凯鹏
时间:
2013-11-17 21:02
标题:
i++和++i????
大家把i++和++i给我讲解一下,现在变得有点迷糊、、、、最好举个例子讲解
作者:
贺奕凯
时间:
2013-11-17 21:24
i++就是语句执行完毕以后补做一个i=i+1的赋值
++i就是在语句执行之前执行一个i=i+1语句
举个例子:
class Demo
{
public static void main(String[] args) {
int m=0;
for(int i=0;i<5;i++)
{
System.out.println(m++);
}
}
}
复制代码
输出结果:0 1 2 3 4
class Demo
{
public static void main(String[] args) {
int m=0;
for(int i=0;i<5;i++)
{
System.out.println(++m);
}
}
}
复制代码
输出结果: 1 2 3 4
5
作者:
jing迪
时间:
2013-11-17 21:32
class Test{
public static void main(String[]args){
int a=0;
System.out.println(a++);//打印结果是0,但是此后的a已经等于1了。(先用后加1)
//注意:此时a等于1了。
System.out.println(++a);//打印结果是2,此后的a等于2。(先加1后用)
a++;//这是个式子,这式子完成后此后的a等于3了。
System.out.println(a);//打印结果是3。
++a;//同理这也是个式子,这个式子完成后的a等于4了。(无论++在前和在后式子完成后a都加1了。)
System.out.println(a);//打印结果是4.
//综合练习
int b=a++ + ++a;/*结果b=10。解析:此式子相当于int b=(a++)+(++a)接着算int b=4+6=10。其中a++遵循先用后加1所以参加运算的是4,
但这个式子(a++)结束了此时a已经加1了所以此后的a=5;然后接着算++a遵循先加1后运算所以参加运算的是5+1=6,所以最终结果是b=10。
此后的a等于6了。*/
System.out.println("b="+b+"; a="+a);
/*总结:
1.a++先用后加1
2.++a先加1后用
3.无论++在前和在后式子完成后a都加1了。*/
}
}
作者:
马晓平
时间:
2013-11-17 21:54
1 首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值
2 ++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值(可被寻址的值);i++ 的后面一步是自增,不是左值.
3 ++i 和i++ 的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,以及很难察觉的写脏,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。
4 i=1 ; j=(++i)+(++i)+(++i); printf("J=%d/n",j); 这个结果是什么?没有结果,因为不同的编译器做出来的结果,我用vc6和gcc出来的结果是一样的,但是我坚信这么多不同编译器的优化规则都会导致这个怪异的结果。回过头来,这样coding,你会疯掉的,左手logic,右手biology千万别走火入魔!
5 我们来看看在++行为上表现迥异的c++程序和java程序
test.java
public class test{
public static void main(String args[]){
int i = 0 , j ;
for(j=0;j<5;j++){
i=i++; System.out.println("i="+i);
}
}
}
test.c
#include<stdio.h>
main(){
int i = 0 , j ;
for(j=0;j<5;j++){
i=i++ ; printf("i=%d/n",i);
}
}
test.java的结果是 i=0 i=0 i=0 i=0 i=0, test.c的结果是 i=1 i =2 i=3 i=4 i =5
作者:
Faner
时间:
2013-11-17 21:58
i++和++i 不赋值时候 是一样的 没区别 如果赋值 i=o t=i++或t=++i 有区别 t=i++ 先赋值 (=)后++ 。。。t=++i 先(++) 后赋值 (=) 记住 i 前先碰到 那个符号 那个符号先进行运算
作者:
zbgl
时间:
2013-11-17 22:18
i++是在赋值之后运算的,而++i是在运算之后赋值的。
作者:
呆呆呆
时间:
2013-11-17 22:23
这个地方也不太清楚,受教了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2