1、这个应该和java内部机制有关,我也想不通,想必一个int变量在被赋值的同时不考虑执行其自身的++操作……,也就是说i=i++这句i值并不会改变。你将i改为4试试看,同样不会变
2、要知道,++的运算级别比+要高,也就是说i=i++ + i++ + i++;其实应该是:
i=(i+(++i)+(++i))++;
那么先执行i+(++i)+(++i)部分,很明显i已经变成3了,然后执行
i=i++;,此时问题就和1一样了,i的值不会改变
3、int i[]; index=0; i[index]=index=5;
很明显结果i[0]=5是应该的。
i[index]=index=5; 这句拆开就是i[index]=5;index=5;,
2、要知道,++的运算级别比+要高,也就是说i=i++ + i++ + i++;其实应该是:
i=(i+(++i)+(++i))++;
那么先执行i+(++i)+(++i)部分,很明显i已经变成3了,然后执行
i=i++;,此时问题就和1一样了,i的值不会改变
3、int i[]; index=0; i[index]=index=5;
很明显结果i[0]=5是应该的。
i[index]=index=5; 这句拆开就是i[index]=5;index=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+1java中对自增是取完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++;中间有空格的
其次,你这样写是语法错误对于1
由于是先自增,所以i先是在表达式的右边自增为1,然后被赋值为0,最后的结果为0对于3
编译时由左向右解析,为i[0],赋值时由右向左进行,均赋为5
int i=0;
i=++i;
System.out.println(i);2、赋值时已经进行了运算。
i++是操作后,i自动加一。
2:i=0+1+2;
对于第二个问题,我认为是对的.
首先当开始运行时i为0,结果就变为i=0+1+1;再执行的时候就变为i=1+2(最后的i自动的加1),所以是等于3.
第三个问题就更明显了,开始时i[0]=0,往后在执行就变成i[0]=5了. 我认为你用的机子执行方式是从左到右的.
int i =0;
i = i++;//i = 0 后缀先取值再自加一
i = ++i;//i = 1;前缀先自加一再取值
2.
int i=0;
i=i++ + i++ + i++;//i = 3;原理同上,'+'操作符顺序为左 -> 右。
3.
上面已经有很多了。
2.同上,最后为i=0+1+2,故i为3;
3.赋值运算符的运算方向为由右到左;故为5;且index也为5,但是在i[index]中他用的是最原始的index=0值;
实际就是java的运算优先级的比较,和运算方向的比较。不对之恳处请指出!
to zxl_lim() ,
i = i++;//i = 0 后缀先取值再自加一,
关键是i自加一后就值就是1了,我打印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++;想通了没有?
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 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......
所以等于三.
2、运算符优先级问题
3、index=0;index先赋值为0,然后 i[index]=index=5 index又赋值为5 结果自然是5;
2.i=0+1+2=3;
3.index=5;k[0]=5;k[5]=0;