7

ちょうど今、私は「charはJavaで唯一の符号なし整数プリミティブ型です」と読みました。これは、charがJavaの整数型の1つであることを意味しますか?

Cと同じように、最近、C型にはスカラー型、関数型、共用体型、集計型が含まれ、スカラー型にはポインター型と算術型が含まれ、算術型には整数型と浮動小数点型、整数型が含まれることを読みました。列挙型と文字型を含みます。

char型は、JavaとCの両方で実際に整数として分類できますか?

4

8 に答える 8

8

はい、acharは、それが表示されるすべての一般的な言語で整数型です。「積分」とは、そのスペクトルが離散的であり、任意の 2 つの異なる値の最小差が であることを意味します1。サポートされる値の必要な範囲は、通常、他の整数型の範囲と比較して非常に小さいです。コンピュータ ハードウェアは伝統的に整数を基本的なデータ型として扱います。対照的に、算術浮動小数点型は最近追加された、より複雑な型です。

于 2012-07-26T14:51:11.050 に答える
5

@aioobeの答えに似ています

int n = 5;
char ch = (char) '0' + 5; // '5'

またはその逆

char ch = '9';
int i = ch - '0'; // 9

または珍しい

char ch = 'a';
ch += 1; // 'b';

または奇数

char ch = '0';
ch *= 1.1; // '4' as (char) (48 * 1.1) == '4'

ch %= 16; // `\u0004`
int i = ch; // 4

ところで: String.hashCode() から

// int h = 0;
char val[] = value;
int len = count;

for (int i = 0; i < len; i++) {
    h = 31*h + val[off++];
}
于 2012-07-26T15:09:44.870 に答える
4

Java Primitive Data Typesチュートリアルによると:

char : char データ型は、単一の 16 ビット Unicode 文字です。最小値は '\u0000' (または 0) で、最大値は '\uffff' (または 65,535 を含む) です。

そうです、これは 16 ビットの符号なし整数です。型を使用して数字を表すか文字を表すかはあなた次第です...


またchar、Java では型が 16 ビットであることが保証されていますが、C が課す唯一の制限は、型が少なくとも 8 ビットでなければならないということです。この回答のC仕様参照によると:

ビットフィールド (バイト) ではない最小オブジェクトの最大ビット数

CHAR_BIT 8

したがって、charC の a は、必ずしもcharJava の a と同じ範囲の整数値を表すとは限りません。

于 2012-07-26T14:52:29.450 に答える
3

整数型の正式な定義はわかりませんが、要するに、char整数を表すと見なすことができるため、はい、Java の整数型です。

たとえば、次のことができます

char c1 = 'a' + 'b';

char c2 = 5;

char c3 = c2 + 3;

int i = c3;
char c4 = (char) i;

等々。

于 2012-07-26T14:50:19.537 に答える
1

メモリでは、基本的にすべてが不可欠です... しかし、そうです。char は、C、C++、および Java の整数型です。

于 2012-07-26T14:50:41.103 に答える
0

C 仕様では、char型を 1 バイト整数として実装する必要があります。他のタイプの仕様は必ずしも明確ではありません。たとえば、Kernigan と Ritchie C のオリジナルの本では、さまざまな実装の中でshortlongに関する限り、 shortは long よりも長くないという事実にのみ依存できると述べています。

于 2012-07-26T14:52:35.747 に答える