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;
}

生成される出力は次のとおりです。

☺
1

私の質問は、なぜ2つの線が異なるのかということです。私は両方の結果がであると期待し、望んでいました1。私の理解では、それらは同じであるはずですが、それは明らかに間違っています。誰かが私にこれを説明してもらえますか?ありがとうございました

4

3 に答える 3

8

なぜ2つの線が違うのですか?

最初の式(s2)のタイプはですchar。2番目の('1' - '0')のタイプはですint

これが、同じ数値であっても、レンダリングが異なる理由です1。1つ目はASCII1として表示され、2つ目は数値1として表示されます。

なぜ'1' - '0'を与えるのか疑問に思っている場合は、2つの文字を追加するとintが生成さintれるを参照してください。

于 2013-03-27T06:46:04.300 に答える
1

s2はchar、'1'-'0'はintです。

したがって、smileである1のchar値と、int値である1を入力します。

于 2013-03-27T06:52:11.757 に答える
1

s2のタイプはです。ASCII文字1(笑顔)をエコーするためcharstd::cout << s2呼び出します。std::ostream::operator<<(char)

'1'-'0'はint値として解釈されるため、std::ostream::operator<<(int)呼び出され、整数1が出力されます。

于 2013-03-27T08:10:13.920 に答える