2017-11-11 281 views
2

我们的教授说,计算机逻辑,当您将号码添加到另一个很重要所以A + B和B + A并不总是相等的。 虽然,我找不到时,他们会是不同的例子,为什么他们是不相等的。 我认为这将有再次做位,但随后事情,我不知道。a + b如何不等于b + a?

+0

是否有更多背景呢? – harold

+0

不,不是。不幸的是,就是这样。 – Narciss

+0

你应该问问你的教授,然后回到我们身边 – bee

回答

0

一个模糊的可能性是,如果a或b中的一个或另一个是高分辨率定时器值 - 自程序启动后打勾。

由于在添加之前弹出其中一个值所消耗的cpu周期,因此可能总和可能因订单而异。

1

虽然你不会分享很多背景,但听起来好像你的教授没有详细说明或者你错过了一些东西。

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

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

但与你分享的背景下,这是所有投机。

0

如果ab是带副作用的表达式,那么还有一种可能性。例如。

int x = 0; 

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

int b() { 
    return x; 
} 

a() + b()将返回2和b() + a()将返回1(都来自初始状态)。

或者它可能是abNaN,在这种情况下甚至a == a是错误的。虽然这个与“当你添加一个号码到另一个”没有关系。

相关问题