C语言 对于加法 从右向左赋值; a=2; 3*a++ 后 a=3; b = a +3*a;中的前者值 为3.后者为2;结果为9; JAVA 对于加法 从左向右赋值 结果为8;
C和Java中+,都是自左向右的。。结果都是8;
int a=2; int b=a+3*a++; 等同于:int a = 2; int c = a ; int d = 3 * a++; b = c + d; System.out.println(b); 结果为:8如果: int a = 2; int c = 3 * a++; int b = a + c; System.out.println(b); 结果是:9谢谢。
int b=a+3*a++;
相当于
int a=2;
int b=a+3*a;
a++;
这个应该是从左向右执行,还是从右向左执行的问题。java应该是从左向右执行。c好像是跟机器有关。
c结果也是8
a=2; 3*a++ 后 a=3; b = a +3*a;中的前者值 为3.后者为2;结果为9;
JAVA 对于加法 从左向右赋值 结果为8;
int b=a+3*a++;
等同于:int a = 2;
int c = a ;
int d = 3 * a++;
b = c + d;
System.out.println(b);
结果为:8如果: int a = 2;
int c = 3 * a++;
int b = a + c;
System.out.println(b);
结果是:9谢谢。
Java应该是8, Java跨平台。
C编译器的不同实现,有可能结果不一样。
int a=2;
int c=a;
int d=3*a++;
int b=c+d;
b=8
int a=3;
a=a++ + a++ + a++;
printf("%d",a);
java为了保证WORA,规定求值从左到右; C/C++没有限定,由编译器发挥。
int b=(a++)+3*a++;
System.out.println(b);
C不知道。。
int a=2;
int b;
b=a++ +a++ +a++;
System.out.println(b);运算结果是9;
应该是2+3+4得出的结果
int b=a+3*a++;
System.out.print(b);2+3*2
又不是++a所以不会输出a自加后的结果,如果用变量接收,再输出变量为9,从左到右执行,结果8
最终结果8,----->>>>JAVA
class Test{
public static void main(string[] args){
a=2;
b=a+3*a++;
system.out.println(b);
}
}java运行是8。
C的话,应该也是一样的8.
这明显是java的代码啊,
int a=2;
int b=a+3*a++;
System.out.print(b);
楼主做这个题首先要高兴运算符优先级的问题,就本题而言,a++>*>+>=
所以先运行a++,你要明白a++什么意思,先使用a,然后a的值在加一,(不过前面的a,jvm虚拟机已经将它编译,所以值是2.)所以是int b=a+3*2;然后再计算3*2
,int b=a+6;最后是int b=2+6;
所以b=8