可能重复:
Java + =运算符
代码示例:
double d = 1;
float f = 2;
f += d; // no error?
f = f+d; // type mismatch error, should be f = (float) (f+d);
Run Code Online (Sandbox Code Playgroud)
那么为什么不产生错误(即使在运行时也f+=d 没有),虽然这会降低精度d?
形式E1 OP = E2中的化合物,赋值表达式等价于E1 =(T)((E1)OP(E2)),其中T是E1的类型,不同的是E1只计算一次.
这意味着:
f += d;
Run Code Online (Sandbox Code Playgroud)
会变成
f = (float) (f+d);
复合赋值会进行隐式转换。
a #= b;
Run Code Online (Sandbox Code Playgroud)
相当于
a = (cast to type of a) (a # b);
Run Code Online (Sandbox Code Playgroud)
另一个例子
char ch = '0';
ch *= 1.1; // same as ch = (char)(ch * 1.1);
// ch is now '4'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |