【发布时间】:2015-07-02 19:34:21
【问题描述】:
当对 unsigned 值使用一元减号时,我的 C 编译器发出警告,因此我改用 0 减法来修复警告。
现在想知道现在的代码是不是和原来的一样:
uint32_t a, b; // assume b is initialized and non-zero
a = -b % b; // old code
a = (0-b) % b; // current code
我的问题是:对于 b 的相同值,两行代码是否会为 a 产生相同的结果?
【问题讨论】:
-
@juanchopanza,因为可能是整数提升,所以不是完全重复。
标签: c unary-operator integer-promotion binary-operators