2013-03-27 104 views
4
#include <iostream> 
#include <string> 

int main() { 
    char s2; 
    s2 = '1' - '0'; 
    std::cout << s2; 
    std::cout << std::endl; 
    std::cout << '1' - '0'; 
    std::cin >> s2; 
} 

輸出產生的是:減去2個字符,並把它們添加到字符串

☺ 
1 

我的問題是,爲什麼是兩個不同的行?我期望並希望兩個結果都是1。根據我的理解,它們應該是相同的,但顯然是錯誤的,有人可以向我解釋這一點嗎?謝謝

回答

8

爲什麼兩條線不同?

第一個表達式(s2)的類型是char。第二種('1' - '0')的種類是int

這就是爲什麼他們呈現不同,即使他們有相同的數值,1。而第二顯示爲數字1

如果你想知道爲什麼'1' - '0'給出了一個int,見Addition of two chars produces int

+0

如何讓char(s2)成爲char''1''? – 197 2013-03-27 06:47:46

+0

@ 197:將「0」加入它。或者,如果只是輸出,則將其轉換爲「int」。 – NPE 2013-03-27 06:49:07

+0

@ 197你把它轉換成int。 – jrok 2013-03-27 06:49:10

1

s2爲炭,第一顯示爲ASCII 1,「1」 - 「0」爲int 。

因此它鍵入的是1的笑容值和1的int值。

1

s2的類型爲char,std::cout << s2將呼叫std::ostream::operator<<(char)以迴應ASCII字符1(微笑);

'1' - '0'被解釋爲一個int值,因此std::ostream::operator<<(int)將被調用並且將打印整數1。

相關問題