<分区>
我的 C 编译器在对 unsigned
值使用一元减号时发出警告,因此我通过从 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
产生相同的结果?
<分区>
我的 C 编译器在对 unsigned
值使用一元减号时发出警告,因此我通过从 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
并且将以该类型进行否定。
关于c - 一元减号等于 binop 减号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843383/