2016-02-07 48 views
-5

這是我的C++作業,請幫助我。在輸出(我已經用Google搜索了一下,發現沒有)C++在輸出中顯示'123',3224115(使用cout)

int main() 
{ 
    std::cout<<'123'; 
    getchar(); 
    return 0; 
} 

你會得到3224115. 爲什麼呢?

+6

您正在使用錯誤的引號。 '是單個字符而不是字符串。使用雙引號「作爲字符串std :: cout <<」123「;' – drescherjm

+0

我知道,問題在於我寫的是什麼 –

+0

查看3224115的十六進制表示。然後在ASCII表中查找十六進制 – molbdnilo

回答

2

寫代替

std::cout << "123"; 
      ^^

'123'是字符文字具有實現定義的值,並輸入int

它可以是想象例如下列方式

#include <iostream> 

int main() 
{ 
    int x = 0x313233; 

    std::cout << x << std::endl; 

    return 0; 
} 

其中0x310x320x33是字符'1''2' ASCII碼,'3'相應。

對於這個程序的輸出可以是

3224115 
+0

我不能改變單引號,我必須找出 –

+0

@PaladinVahid由於我寫了多字節字符文字,它的類型是int,它的值是實現定義的 –

+0

我想你錯過了解這個問題,問題是爲什麼我們得到的那個數字不是什麼問題代碼 –

0

引述C standard(第61)

包含多於一個 字符的整數字符常數的值(例如,'ab'),或者包含字符或轉義序列 ,它不映射到單字節執行字符,是 實現定義的。

+0

我想你錯過了解這個問題。問題是爲什麼我們得到這個數字,而不是代碼有什麼問題。 –

+0

我需要知道爲什麼'123'通過編譯器顯示3224115。 –

+0

編輯以顯示單引號不起作用的原因 – stackptr