2012-12-09 20 views
-1

可能重複:
Why is address of char data not displayed?使用與運營商,char數據類型

我是用符號運營商試驗和卡住了這個節目:

#include<iostream> 
using namespace std; 

int main() { 
    char i='a'; 
    cout<<&i; 
    return 1; 
} 

我將變量i的地址作爲輸出b ut代替輸出作爲變量i本身的值爲

任何人都可以解釋發生了什麼?提前Thanx。

+0

上面的程序給出了int,float,double和long數據類型的預期輸出。 –

回答

4

這是因爲cout::operator<<const char*有過載。你需要顯式轉換打印地址:

cout<<static_cast<void*>(&i); 

這將調用過載與void*作爲參數,它是用來打印地址之一。

另請注意,您的代碼會遇到未定義的行爲。您只有一個字符,並且超載需要以空字符結尾的C字符串。

+0

我不同意這種行爲是未定義的。移位運算符的行爲與其記錄的完全相同,它的數據被破壞:) – StoryTeller

+0

@DimaRudnik沒有移位運算符。 –

+0

這不就是運營商所謂的,向左移動嗎? – StoryTeller