【问题标题】:Is unary minus equivalent to binop minus? [duplicate]一元减号是否等于二元减号? [复制]
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 在这种情况下,最终结果将是相同的 :-)
猜你喜欢
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 2012-03-17
  • 2012-03-17
  • 2015-11-16
  • 2017-01-02
  • 2014-02-02
相关资源
最近更新 更多