当前位置: 技术问答>java相关
i=i++问题
来源: 互联网 发布时间:2015-09-07
本文导语: 1、为什么结果为0?在C和C++中结果为1 int i=0; i=i++; System.out.println(i); 2、这里输出为3,为什么? int i=0; i=i++ + i++ + i++; System.out.println(i); 3、 int i[]; index=0; i[index]=index=5; 结果为什么是,i[0]=5; | ...
1、为什么结果为0?在C和C++中结果为1
int i=0;
i=i++;
System.out.println(i);
2、这里输出为3,为什么?
int i=0;
i=i++ + i++ + i++;
System.out.println(i);
3、
int i[]; index=0; i[index]=index=5; 结果为什么是,i[0]=5;
int i=0;
i=i++;
System.out.println(i);
2、这里输出为3,为什么?
int i=0;
i=i++ + i++ + i++;
System.out.println(i);
3、
int i[]; index=0; i[index]=index=5; 结果为什么是,i[0]=5;
|
给你个例子
i=0;
i=i++ + i++ + i++ + i++ + i++;
System.out.println(i);
猜猜结果是什么?
答案就是i=0+1+2+3+4 =10
你的i=i++ + i++ + i++;之所以为3,是0+1+2,而不是1+1+1
java中对自增是取完i的值之后立即自增,而不是等整个表达式结束后再自增.
i=0;
i=i++ + i++ + i++ + i++ + i++;
System.out.println(i);
猜猜结果是什么?
答案就是i=0+1+2+3+4 =10
你的i=i++ + i++ + i++;之所以为3,是0+1+2,而不是1+1+1
java中对自增是取完i的值之后立即自增,而不是等整个表达式结束后再自增.
|
你还是没有好好看回贴......
i自加一后的值就是1了,但此时还没有给左边的变量i赋值,此时要赋给它的值是0(没意见吧..),所以最后i依旧是0
所以java与c的区别就是.....
c:
x=0;
y=(x++) + (x++) + (x++) + (x++) + (x++);
结果是y=0,x=5
x是在给y赋值后再进行自增操作的
java:
x=0;
y=(x++) + (x++) + (x++) + (x++) + (x++);
结果是y=10,x=5
x是在取出原值之后,立即自增,整个表达式的值计算完了之后,自增操作也完了,然后才是给y赋值.
所以,你的i=i++;想通了没有?
i自加一后的值就是1了,但此时还没有给左边的变量i赋值,此时要赋给它的值是0(没意见吧..),所以最后i依旧是0
所以java与c的区别就是.....
c:
x=0;
y=(x++) + (x++) + (x++) + (x++) + (x++);
结果是y=0,x=5
x是在给y赋值后再进行自增操作的
java:
x=0;
y=(x++) + (x++) + (x++) + (x++) + (x++);
结果是y=10,x=5
x是在取出原值之后,立即自增,整个表达式的值计算完了之后,自增操作也完了,然后才是给y赋值.
所以,你的i=i++;想通了没有?
|
补充:2、不好意思,我看错了,i=i++ + i++ + i++;
按优先级划分还是
i=(i++)+ (i++) + (i++);
那么问题就是这么说:i++运算我想应该是这么说的,在执行i++操作中,若此步未结束,i值不变(也就是说未执行到行结束符号";"处,i值不变),那么就好解释了,i=(i++)+ (i++) + (i++);,再和1题相对,转换为i=3*(i+1);,那么结果就好理解了。
以上所解,未必正确!!!
按优先级划分还是
i=(i++)+ (i++) + (i++);
那么问题就是这么说:i++运算我想应该是这么说的,在执行i++操作中,若此步未结束,i值不变(也就是说未执行到行结束符号";"处,i值不变),那么就好解释了,i=(i++)+ (i++) + (i++);,再和1题相对,转换为i=3*(i+1);,那么结果就好理解了。
以上所解,未必正确!!!
|
我晕....
to: alphazhao(绿色咖啡)
i=(i+(++i)+(++i))++;
这样都行啊
首先,他写的是i=i++ + i++ + i++;中间有空格的
其次,你这样写是语法错误
对于1
由于是先自增,所以i先是在表达式的右边自增为1,然后被赋值为0,最后的结果为0
对于3
编译时由左向右解析,为i[0],赋值时由右向左进行,均赋为5
to: alphazhao(绿色咖啡)
i=(i+(++i)+(++i))++;
这样都行啊
首先,他写的是i=i++ + i++ + i++;中间有空格的
其次,你这样写是语法错误
对于1
由于是先自增,所以i先是在表达式的右边自增为1,然后被赋值为0,最后的结果为0
对于3
编译时由左向右解析,为i[0],赋值时由右向左进行,均赋为5
|
据我所知,有的机子执行方式是不一样的,有的是从左向右做的,有的是从右往左做的,所以对I++的问题有两种不同的结果,最好的方法是在表达式I++中加上括号.象上面的问题我认为应该是机子执行方式引起的,
对于第二个问题,我认为是对的.
首先当开始运行时i为0,结果就变为i=0+1+1;再执行的时候就变为i=1+2(最后的i自动的加1),所以是等于3.
第三个问题就更明显了,开始时i[0]=0,往后在执行就变成i[0]=5了.
我认为你用的机子执行方式是从左到右的.
对于第二个问题,我认为是对的.
首先当开始运行时i为0,结果就变为i=0+1+1;再执行的时候就变为i=1+2(最后的i自动的加1),所以是等于3.
第三个问题就更明显了,开始时i[0]=0,往后在执行就变成i[0]=5了.
我认为你用的机子执行方式是从左到右的.
|
1.
int i =0;
i = i++;//i = 0 后缀先取值再自加一
i = ++i;//i = 1;前缀先自加一再取值
2.
int i=0;
i=i++ + i++ + i++;//i = 3;原理同上,'+'操作符顺序为左 -> 右。
3.
上面已经有很多了。
int i =0;
i = i++;//i = 0 后缀先取值再自加一
i = ++i;//i = 1;前缀先自加一再取值
2.
int i=0;
i=i++ + i++ + i++;//i = 3;原理同上,'+'操作符顺序为左 -> 右。
3.
上面已经有很多了。
|
看这个例子,把它们的输出想通了之后,就自然明白了.......
看这个例子....
int b = 0;
int c1,c2,c3,c4,c5,c6;
b=0;
c1=b++;
System.out.println("NO c1"+": "+c1);
b=0;
c2=b++ + b++;
System.out.println("NO c2"+": "+c2);
b=0;
c3=b++ + b++ + b++;
System.out.println("NO c3"+": "+c3);
b=0;
c4=b++ + b++ + b++ + b++;
System.out.println("NO c4"+": "+c4);
b=0;
c5=b++ + b++ + b++ + b++ + b++;
System.out.println("NO c5"+": "+c5);
b=0;
c6=b++ + b++ + b++ + b++ + b++ + b++;
System.out.println("NO c6"+": "+c6);
看这个例子....
int b = 0;
int c1,c2,c3,c4,c5,c6;
b=0;
c1=b++;
System.out.println("NO c1"+": "+c1);
b=0;
c2=b++ + b++;
System.out.println("NO c2"+": "+c2);
b=0;
c3=b++ + b++ + b++;
System.out.println("NO c3"+": "+c3);
b=0;
c4=b++ + b++ + b++ + b++;
System.out.println("NO c4"+": "+c4);
b=0;
c5=b++ + b++ + b++ + b++ + b++;
System.out.println("NO c5"+": "+c5);
b=0;
c6=b++ + b++ + b++ + b++ + b++ + b++;
System.out.println("NO c6"+": "+c6);
|
1、为什么结果为0?在C和C++中结果为1
int i=0;
i=i++;
System.out.println(i);
我的想法.头一个因为他是先取值后加所以i的值还为零.
2、这里输出为3,为什么?
int i=0;
i=i++ + i++ + i++;
System.out.println(i);
答:我想这句可以写成这个样子.i=0+1+2
也就是说第一个i++是取值零.然后加1 第二个就变成了1......
所以等于三.
int i=0;
i=i++;
System.out.println(i);
我的想法.头一个因为他是先取值后加所以i的值还为零.
2、这里输出为3,为什么?
int i=0;
i=i++ + i++ + i++;
System.out.println(i);
答:我想这句可以写成这个样子.i=0+1+2
也就是说第一个i++是取值零.然后加1 第二个就变成了1......
所以等于三.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。