68293


C++言語で、char型というのが有りint型と演算をすると、結果はint型になると聞いたのですが、試しに

[code]

    bool ex1,ex2;
    ex1 = '1' == ('0' + 1);
    ex2 = '1' == 1;
    cout << ex1 << endl;
    cout << ex2 << endl;
    
[/code]

とすると、結果は

[code]

    1
    0
    
[/code]

と表示されてしまいました。ex1もint型になるというので有れば、同じ結果を与えると思うのですが上記2つの論理演算の結果が異なっているのはC++言語のどの様な仕様に基づいて処理されたからなのでしょうか？


CC BY-SA 4.0
2020-07-05T05:57:13.273
68290
2020-07-05T06:49:05.073
2020-07-05T06:49:05.073
4236
19869
question
c++
C++でのchar型とint型の演算について


> C++言語で、char型というのが有りint型と演算をすると、結果はint型になると聞いた

あくまで`char`で表している文字コードの値に変換されます。`char`の`'1'`は`int`の`49`へ変換されます。

[code]

    ex2 = '1' == 1;
    
[/code]

は

[code]

    ex2 = 49 == 1;
    
[/code]

であり`false`が得られます。


CC BY-SA 4.0
2020-07-05T06:31:26.740
68293
2020-07-05T06:31:26.740
4236
68290
answer