rof*_*ggo 1 java unary-operator
不是我想要的,但我想知道为什么一元运算符不能直接处理Java中的值?
为什么result++;工作int result = 0;但result = 0++;不工作?
我能找到的docs只是一元运算符只需要一个operand,但是对于一个操作数没有明确的定义,它似乎可以是变量或值.
并不是一元运算符不起作用 - 例如 - (+( - 5))没问题.
但++不只是计算一个值 - 它的目的是增加一个变量.0不是变量.
从JLS 15.14.2(后缀增量运算符++)
后缀表达式的结果必须是可转换(§5.1.8)到数字类型的类型的变量,否则会发生编译时错误.
请注意,这不仅仅是文字.你做不到:
String x = "foo";
x.length()++; // wrong!
Run Code Online (Sandbox Code Playgroud)
因为再次,x.length()不被归类为变量.
但是你可以使用其他一元运算符,例如
String x = "foo";
int y = -x.length(); // Unary - operator... that's fine
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |