http://topic.csdn.net/u/20081222/10/aead0637-2142-4867-90db-413e203c4f09.html
int x =1;
int j=(x++)+(x++)+(x++); Java中j为6,LCC中为6
Turbo C中为3.
请问,其他的C编译器中,j为多少?
*************************************************
3和6,那一个理解起来比较自然?
(实际编程中避免该用法。)
int x =1;
int j=(x++)+(x++)+(x++); Java中j为6,LCC中为6
Turbo C中为3.
请问,其他的C编译器中,j为多少?
*************************************************
3和6,那一个理解起来比较自然?
(实际编程中避免该用法。)
int x =1;
int j=(x++)
int j=1;
int x =1;
int j=(x++)+(x++);
int j=2+1;
int x =1;
int j=(x++)+(x++)+(x++);
int j=3+2+1;
int x =1;
int j=(x++)+(x++)+(x++)+(x++);
int j=4+3+2+1;
依次类推,明白否???
错,与c不同,java规定了表达式的操作顺序是从左到右,
所以 int j = 1+2+3+4;才对
理论:编程逻辑和编译器实现是否相关?理论上是否应该无关?学习Java是否应该深入理解JVM?
实践:实际编程中避免该用法。:)
j=a+b+c
并且i++来说,a=i++第一次使用时为a=i,然后才+1
所以就为3咯。
1、不要讨论(x++)+(x++)+(x++)为什么等于3或者6;不要讨论不同的C编译器可以会给出不同的答案.
谁都似乎知道的东西别说了。
2、(实际编程中避免该用法。) 第一楼就强调了。不要“连看贴都不会”。3、Java中会和C语言中一样,出现“不同的编译器可以会给出不同的答案”的情况吗?
如果不,感谢JLS和JVM规范;如果是,这个Java编译器是谁写的?
**************************************
4、Java编程中
int j= x++ ;和int j= ++x;是常用的。5、真正懂了,再复杂的表达式也不难。x=1,
j = (x++ )+(x++ )*(++x)+(--x)不就是1+2*4+3么。
不要希望招聘时考官去考你x=1,int j= x++。(换位思考,假设你去考别人)
他会考你j= (x++)+(++x);