2013-11-25 145 views
1

通過查看fundamental C++ type reference,可以看到在LP64上,long是64位,就像在同一平臺上的long long一樣。這是否意味着這兩種類型在LP64平臺上是相同的?在LP64上,`long'與`long long`相同嗎?

+0

定義「相同」。 –

+0

@RobertHarvey我看不出有什麼用處。 「長」和「長」是兩種不同的類型,即使它們碰巧具有相同的尺寸。 – 2013-11-25 21:11:54

+0

@RobertHarvey:「在所有情況下都可以代替」。 –

回答

4

不,它沒有。這隻意味着它們同樣廣泛。

+0

它們之間的差異如何在LP64上顯示? –

+1

@DunPeal至少,「長我」 long long * p =&l;'應該給出編譯時診斷,無論大小是否匹配。 – hvd

+0

@DunPeal在編譯器警告/錯誤和可能的未定義行爲。 – 2013-11-25 21:15:32

0

沒有,就拿:

void foo(long); 
void bar() 
{ 
    foo(5L); 
} 
void foo(long long val) 
{ 
    std::cout << val; 
} 

這無法鏈接。