2017-11-11 2 views
2

私たちの教授は、コンピュータロジックでは、a + bとb + aが常に等しいとは限りません。 しかし、私は彼らがいつ異なっているのか、なぜ彼らが平等にならないのかの例は見つけられませんでした。 私はビットで何かをしなければならないと思っていますが、もう一度、私はよく分かりません。a + bはb + aと等しくないのですか?

+0

これ以上のコンテキストはありますか? – harold

+0

いいえ、実際はありません。残念なことです。 – Narciss

+0

教授に尋ねて、私たちに連絡してください – bee

答えて

0

aまたはbのいずれか1つまたは他が高精細度のタイマー値である可能性があります。

追加前の値の1つをポップするために消費されたCPUサイクルのため、合計は注文によって異なる可能性があります。

1

あなたは多くの文脈を共有していませんが、教授がそれについて詳述しなかったか、何かを見逃したように聞こえます。

一般的にロジックについて話していた場合は、+オペレータの動作が定義方法によって異なることを意味する可能性があります。

例:(+) a b := if (a==0) then 5 else 0の定義は、関連付けられていない+演算子になります。 1 + 0は0になりますが、0 + 1は5になります。標準演算子のこの再定義(上書き)を可能にする多くのプログラミング言語があります。

あなたが共有するコンテキストでは、これはすべて推測的です。

0

aおよびbが副作用のある式である場合、もう1つの可能性があります。例えば。

int x = 0; 

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

int b() { 
    return x; 
} 

a() + b() 2を返し、b() + a() 1が返される(両方初期状態から)。

aまたはbNaNである場合もあります。この場合でも、a == aはfalseです。この1つは、「別の番号を追加するとき」とは関連していませんが。

関連する問題