在 IT 技术中,long
是否等同于 signed long
(或者说是 int
、char
等)?这个规范是否有保证,或者说是否有些版本或编译器可能会因为我把它作为理所当然而崩溃?
在 IT 技术中,long
是否等同于 signed long
(或者说是 int
、char
等)?这个规范是否有保证,或者说是否有些版本或编译器可能会因为我把它作为理所当然而崩溃?
char
之外,所有类型都可以使用您列出的方法。
char
在实现中是有符号或无符号的。此外,char
与signed char
和unsigned char
完全不同,尽管它将具有与其中一个完全相同的属性。字符类型包括三种类型:char
、signed char
和unsigned char
。实现应定义char
具有与signed char
或unsigned char
相同的范围、表示和行为。
是的,以下两个变量定义是相同的:
long x = 9;
signed long x = 9;
signed
关键字在这里是不必要的,因为变量默认情况下是有符号的,除了char
。如果需要使用 unsigned
,则需要显式使用 unsigned
关键字。
signed
在 C 中是否自动默认为有符号变量? char
是与 unsigned char
和 signed char
不同的类型。 char
的范围与 unsigned char
或 signed char
相同。
wchar_t
与 char
类似。
位域。
int
位域可以是有符号或无符号的。这是实现定义的行为。 如果允许使用 long
、unsigned long
和 unsigned long
,则会产生实现定义的行为。另请参阅。
位域必须具有限定或未限定版本的
_Bool
、signed int
、unsigned int
或其他实现定义类型。C11dr §6.7.2.1 5位域被解释为具有指定位数的带符号或无符号整数类型。125 §6.7.2.1 10
125 如上所述,如果使用的实际类型说明符是
int
或 ...,则位域是有符号还是无符号是实现定义的。