1

次のプログラムでは、int 値のキャスト中に char プリミティブが _ve 記号を無視することはできません...

public class CharConsole {

    public static void main(String[] er) {
        char a = (char) 65;
        char b = (char) -65;
        char c = (char) 98;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}
4

3 に答える 3

4

Acharを負にすることはできないため、次のように記述します。

char b = (char) -65;

オーバーフローがあり、実際の値は65,536 - 65です。で確認できます

System.out.println((int) b);

これは次を印刷します:65471

その文字はおそらくコンソールで処理されず、たとえば空白または正方形として表示される可能性があります.

于 2013-08-05T06:48:04.570 に答える
0

「intをcharに変換する」ものに依存します。

単純に値を int にキャストしたい場合は、Java の型キャスト表記を使用してキャストできます。

int i = 97; // 97 is 'a' in ASCII
char c = (char) i; // c is now 'a'

しかし -ve はASCII文字値ではなく、文字を表していません

キャストバックできます

char b=(char)-65;
int i = (int)b;

print I 65471 になります

于 2013-08-05T06:56:05.110 に答える
0

ここで何を期待しますか?文字の int 値は、文字エンコーディング テーブルにマップされます。ネガティブ テーブル マッピングはありません。要求された文字コードがエンコード テーブルの範囲外であるため、常に疑問符が表示されます...

于 2013-08-05T06:48:59.247 に答える