int
(char
,git push REMOTE '*:*'
git push REMOTE --all
等)?
这是否由规范保证,或者如果我认为这是理所当然的话,会有一些不起眼的版本或编译器会爆炸。
答案 0 :(得分:6)
对于您列出的所有类型都是,而不是char
。
char
以实现定义的方式签名或未签名。此外,char
与singed char
和unsigned char
完全不同,即使它与其中一个具有完全相同的属性。
你可能认为我在这里说话很疯狂,但这里直接来自C标准:
6.2.5类型 - 第15页
共有三种类型char,signed char和unsigned char 称为字符类型。实现应定义char to 具有与签名相同的范围,表示和行为 char或unsigned char。
答案 1 :(得分:3)
是以下两个变量定义相同:
long x = 9;
signed long x = 9;
此处不需要 signed
关键字,因为默认情况下变量为signed
,char
除外。如果您需要使用unsigned
,则需要明确使用unsigned
关键字。
答案 2 :(得分:1)
省略
a
是否自动默认为C中的签名变量?
是的,通常,但不是一般的。 <强>例外强>:
signed
是与char
和unsigned char
不同的类型。 signed char
的范围与char
或unsigned char
相同。
signed char
遵循与wchar_t
类似的3-ness。
位字段。
关于位字段的关键引用表明char
位字段可以是有符号或无符号的。它是实现定义的行为。 See also。如果允许,使用int
,long
和unsigned long
会产生实施定义的行为。
位字段的类型应为
unsigned long
,_Bool
,signed int
或其他实现定义类型的限定或非限定版本。 C11dr§6.7.2.15位字段被解释为具有由指定位数组成的有符号或无符号整数类型。 125 §6.7.2.110
125 如上面6.7.2中所述,如果使用的实际类型说明符是
unsigned int
或...,那么它是实现定义的,无论位字段是有符号的还是无符号的。