我使用负号对一个 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
结果?我使用负号对一个 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
结果?uint32_t
是一个窄类型。那么它首先会被晋升为int
,然后在该类型中进行负数运算。