a+b 怎么可能不等于 b+a?

How can a+b be NOT equal to b+a?

我们的教授说,在计算机逻辑中,将一个数字与另一个数字相加很重要,因此 a+b 和 b+a 并不总是相等。 虽然,我找不到一个例子说明它们什么时候会不同以及为什么它们不相等。 我认为它必须对位做一些事情,但话又说回来,我不确定。

虽然您没有分享很多背景信息,但听起来好像您的教授没有详细说明,或者您漏掉了什么。

在他谈论一般逻辑的情况下,他的意思可能是 + 运算符的行为取决于您如何定义它。

示例:定义 (+) a b := if (a==0) then 5 else 0 导致 + 运算符不具有关联性,例如1 + 0 将是 0,但 0 + 1 将是 5。有许多编程语言允许重新定义(覆盖)标准运算符。

但是根据您分享的上下文,这都是推测。

一个模糊的可能性是 a 或 b 中的一个是否是高清计时器值 - 自程序启动以来的滴答声。

由于在添加之前弹出其中一个值消耗了 cpu 个周期,总和可能会因顺序而异。

另一种可能性是 ab 是具有副作用的表达式。例如

int x = 0;

int a() {
    x += 1;
    return x;
}

int b() {
    return x;
}

a() + b() 将 return 2 并且 b() + a() 将 return 1(均来自初始状态)。

或者 ab 可能是 NaN,在这种情况下甚至 a == a 也是错误的。虽然这个与 "when you add a number to another".

无关