c - 一元减号等于 binop 减号吗?

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

最佳答案

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

关于c - 一元减号等于 binop 减号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29843383/

相关文章:

c - 在比较两个文件的程序中使用多个不同的参数

javascript - 为什么这个一元函数在另一个 javascript 函数中?

c++ - 后缀运算符不应该被认为是二元运算符吗

c - 检索传递给可变参数函数的 int32_t 的可移植方法

c - scanf 段错误,它不应该

c - 如何检测作为参数传递的数组的大小?

将变量从全局更改为局部 - C

使用引用或新值的 C++ 算法

c - 将 signed short 存储在 unsigned int 的低 16 位中

c - 如何在 C 中为表达式 long = short + short 强制整数提升