0

char値をに変換したいint。私は次のコードスニペットで遊んでいます:

#include <iostream>
using namespace std;

int main() {
    char a = 'A';
    int i = (int)a;
    //cout<<i<<endl; OUTPUT is 65 (True)

    char b = '18';
    int j = b;
    //cout<<j<<endl; OUTPUT is 56 (HOW?)

    char c = 18;
    int k = c;
    //cout<<c<<endl; OUTPUT is empty
    //cout<<k<<endl; OUTPUT is 18 (Is this a valid conversion?)

    return 0;
}

3 番目の変換が必要で、正しい出力が得られ18ました。しかし、これは有効な変換ですか? 上記のアウトプットとその戦略について説明してもらえますか?

4

2 に答える 2

1
char b = '18';
int j = b;

b、この場合、'18' の char はあまり一貫した意味を持たず、実装に依存した動作をします。あなたの場合、ASCII値56に変換されているようです(char b = '8'から得られるものと同等)。

char c = 18;
int k = c;

c は文字値 18 を保持し、int への変換は完全に有効です。ただし、キャラクターとして表示するとあまり表示されない場合があります。非印刷制御文字です。

于 2013-10-14T05:45:41.493 に答える