作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了这个问题 in this website ,并在 Eclipse 中尝试过,但无法理解它们是如何被评估的。
int x = 3, y = 7, z = 4;
x += x++ * x++ * x++; // gives x = 63
System.out.println(x);
y = y * y++;
System.out.println(y); // gives y = 49
z = z++ + z;
System.out.println(z); // gives z = 9
根据网站上的评论,x += x++ * x++ * x++ 解析为 x = x+((x+2)*(x+1)*x) 结果是正确的。我想我遗漏了有关此运算符优先级的一些信息。
最佳答案
Java 根据优先级从左到右计算表达式。
int x = 3, y = 7, z = 4;
x (3) += x++ (3) * x++ (4) * x++ (5); // gives x = 63
System.out.println(x);
y = y (7) * y++ (7);
System.out.println(y); // gives y = 49
z = z++ (4) + z (5);
System.out.println(z); // gives z = 9
后缀递增运算符仅在使用/返回变量后递增变量。一切似乎都是正确的。
这是后缀增量运算符的伪代码:
int x = 5;
int temp = x;
x += 1;
return temp;
来自 JLS 15.14.2(reference):
The value of the postfix increment expression is the value of the variable before the new value is stored.
关于java - a += a++ * a++ * a++ 在 Java 中。它是如何被评估的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369393/
我是一名优秀的程序员,十分优秀!