【问题标题】:Need an explanation about evaluating a given expression需要关于评估给定表达式的解释
【发布时间】:2015-10-05 04:02:25
【问题描述】:

表达式如下

(ux-uy) == -(unsigned) (y-x)

其中xy 是随机整数,uxuy 声明和定义如下

unsigned ux = (unsigned) x;
unsigned uy = (unsigned) y;

我用各种数字测试了c中的表达式,它是正确的 但我无法证明为什么它是正确的。请解释一下。

【问题讨论】:

  • signed 是否是ux - uy == -(uy - ux)?你把它想象成一个数学问题,你会看到发生了什么。
  • 逐案分析,即当x比y大n时,y比x大n时,相等。
  • 我对 RHS 前面的 - 符号感到困惑。它到底是做什么的?
  • @user1335175:演员前面的-符号表示结果被否定,然后再次转换回(unsigned int)(因为相等的LHS是unsigned int ) 在比较完成之前。

标签: c arithmetic-expressions


【解决方案1】:

y-x --> int 减法溢出时未定义的行为。

因此,一般情况下,相等 (ux-uy) == -(unsigned) (y-x) 失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-03
    • 2012-05-25
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多