默认情况下,C+中的'int'为'signed long int'+;? >代码> int 默认为C++ >
它是否依赖于平台和/或编译器?如果是,怎么做 [编辑] 以下任何一项是否保证重复默认情况下,C+中的'int'为'signed long int'+;? >代码> int 默认为C++ >,c++,types,C++,Types,它是否依赖于平台和/或编译器?如果是,怎么做 [编辑] 以下任何一项是否保证重复 signed short int signed int signed long int signed long long int unsigned short int unsigned int unsigned long int unsigned long long int 普通int是有符号的,无论其大小是否与long int相同,都取决于平台 可以保证的是 sizeof (int) <= sizeof
signed short int
signed int
signed long int
signed long long int
unsigned short int
unsigned int
unsigned long int
unsigned long long int
普通
int
是有符号的,无论其大小是否与long int
相同,都取决于平台
可以保证的是
sizeof (int) <= sizeof (long)
sizeof(int)Plainint
相当于signed int
。这是标准的。任何无法保证的过去int
和long
是不同的类型,即使您的特定编译器使它们的大小相同。唯一的保证是long
至少与int一样大long
和short
修饰符与有符号和无符号的修饰符不完全相同。后两个可以放在任何整数类型上,但如果您将其禁用,则每个整数类型的默认值为有符号
(除了字符
)。所以int
和signed int
是相同的类型
对于long
和short
,如果不选择它们,则两者都不会被选择,但结果类型不同long int
、short int
和int
都是不同的类型,默认情况下short int
signed
和int
都与signed int
相同
默认情况下,“C++”<代码> INT/>代码> <代码> >已签名int >代码>,因此,这是没有问题的。但是,C++中的代码> int 和 long int 是不同的类型,所以从语言的角度来看,这是不一样的。int
和long int
的实现是特定于平台/编译器的-它们都是可能相同的完整类型。C++标准所施加的唯一限制是<>代码> sieOf(long int)> = sieof(int)< /> > .< /p> 所有的整型<强>类型都是不同的,即您可以安全地为所有这些函数重载函数,不会发生任何冲突。但是,有时使用相同数量的位来表示。即使它们使用相同数量的位,有符号和无符号类型也始终具有不同的范围。除了字符
,使用任何不带符号的整数类型
等同于将其与符号
一起使用,即符号int
和int
是等效的char
与signed char
和unsigned char
是不同的类型,但是char
具有与signed char
或unsigned char
相同的表示形式和范围。您可以使用std::numeric\u limits::is\u signed
来找出它使用的是什么
关于更有趣的方面。以下条件均为真:
linux-amd64
int
上的7有32位,而long
有64位。不同意此说法。“在理想情况下,它并不总是没有歧义和冗余的。”汉斯-让我想起一个来自遥远地方的定义#定义本机INTint@HansPassant:class
vsstruct
?+1,对于其他读者:第一句话中有一个重要的细节:int
和signed long int
永远不是同一类型,但它们可以具有相同的大小。模板参数消失了,因为它们看起来像HTML标记,请使用逐字标记(反勾号)以防止出现这种情况。另外,我很确定您的std::numeric_limits::digits
的保证最小值太高。std::numeric_limits::digits>=16
,是真的。但是您的答案有符号类型,digits
被指定为“对于整数类型,表示中的非符号位的数量。”