【发布时间】:2020-05-20 00:08:22
【问题描述】:
根据这个线程Why don't Java's +=, -=, *=, /= compound assignment operators require casting?,i+=j 比 JAVA 中的 i=i+j 更安全,但不太精确到类型转换。
在 C++ 的情况下也是如此吗?
编辑:
假设:int i; long j; 即变量属于不同的数据类型
【问题讨论】:
-
在 C++ 中,
i += j和i = i + j之间的最终结果没有可观察到的差异,因此如果i = i + j中的精度丢失,那么i += j中的精度也会丢失. C++ 和 Java,AFAIK 之间的主要区别在于,Java 在某些 C++ 没有的情况下会给出编译错误(C++ 在相关的边缘情况下只是给出实现定义或未定义的行为 [取决于类型])