【发布时间】:2012-07-25 04:38:59
【问题描述】:
刚才我读到“char 是 Java 中唯一的无符号整数原始类型”。 这是否意味着 char 是 Java 中的整数类型之一?
和C一样,最近读到C类型包括标量类型、函数类型、联合类型、聚合类型,标量类型包括指针类型和算术类型,然后算术类型包括整数类型和浮点类型,整数类型包括枚举类型和字符类型。
char 类型真的可以在 Java 和 C 中都归类为整数吗?
【问题讨论】:
-
char在 java 中被定义为 UTF-16 字符,这意味着它是一个介于 0 和 65535 之间的 2 字节值。这可以很容易地解释为整数(数学概念,不是int)。 c 中的char被定义为 0 到 255 之间的 1 字节字符。 -
@HansZ 尽管
CHAR_BIT == 8是迄今为止最常见的,但 C 标准允许更大的值。甚至还有一些使用 32 位chars、iirc 的实现。 -
@DanielFischer Ansi C 标准 (C99) $2.2.4.2:* 不是位域(字节)的最小对象的最大位数 CHAR_BIT 8 * 带符号字符类型对象的最小值SCHAR_MIN -127 * 有符号字符类型对象的最大值 SCHAR_MAX +127 * 无符号字符类型对象的最大值 UCHAR_MAX 255
-
@HansZ "它们的实现定义值的大小(绝对值)应等于或大于所示值,且符号相同。"
-
@HansZ 给定值 8 是
CHAR_BIT的最小值允许值。一个实现可能会赋予它更大的价值。