我知道比較兩個doubles
有問題,如果它們是從不同的計算中獲得的。但是,如果其中一個是另一個的副本(價值),這是否也適用。以下幾行解釋了這種情況。如果我有這樣的)問題,比較float和它的副本
double a,b;
a=randdouble();/*some double value*/
b=a;
然後,
Q1是比較a==b
始終保證在C編譯器的情況下返回true
(我有gcc 6.1.1
)? Q2)如果我使用malloc
在堆內存中分配變量a
和b
,那麼上述答案是否保持不變?
Q3)請問上述答案仍然是相同的,如果我有一個Java編譯器(我使用Open JDK 1.7.0
)與ofcourse必要的語法改變取代C編譯器。
編輯1:數字a
和b
是!= NaN
1)否,2)是,3)是 –
@EugeneSh。爲什麼'b = a'不會導致'b == a'成立。這是內存或寄存器的直接副本。 –
@JoshSanford問題是關於*保證*。 –