是一元减去相当于binop减去?

时间:2015-04-24 09:14:38

标签: c unary-operator integer-promotion binary-operators

我的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产生相同的结果吗?

1 个答案:

答案 0 :(得分:3)

通常,是的,除非您的平台uint32_t是一个狭窄的类型。然后它将首先被提升为int,否则将以该类型进行否定。