C++ C和C+中的整数类型+;,以及printf对它们的解释
我最近回答了一个关于这一点的问题,并发现自己在这个过程中对一些事实有点不确定,因此我想再次断言这些事实:C++ C和C+中的整数类型+;,以及printf对它们的解释,c++,c,integer,printf,C++,C,Integer,Printf,我最近回答了一个关于这一点的问题,并发现自己在这个过程中对一些事实有点不确定,因此我想再次断言这些事实: C和C++中的整数类型: char:大小为1字节的整数值 short:大小为2字节的整数值 long:大小为4字节的整数值 long-long:大小为8字节的整数值 类型short、long和long通常后跟int 但是,这不是必须的,我们可以在不使用int的情况下使用它们 或者,我们可以只声明int,但不同的编译器可能会对其进行不同的解释 总结一下: short与short int相
:大小为1字节的整数值char
:大小为2字节的整数值short
:大小为4字节的整数值long
:大小为8字节的整数值long-long
类型
short
、long
和long
通常后跟int
但是,这不是必须的,我们可以在不使用int
的情况下使用它们
或者,我们可以只声明int
,但不同的编译器可能会对其进行不同的解释
总结一下:
与short
相同,但不一定与short int
相同int
与long
相同,但不一定与long int
相同int
与long-long
相同,但不一定与long-long-int
相同int
- 在给定的编译器上,
是int
或short int
或long int
long long int
printf
打印整数:
-printf(“%d”…)
从堆栈中读取int
值
-printf(“%ld”…)
从堆栈中读取一个long int
值
-printf(“%lld”…)
从堆栈中读取long int
值
因此:
-printf(“%ld”…)
将在任何给定平台上读取4个字节
-printf(“%lld”…)
将在任何给定平台上读取8个字节
-printf(“%d”…)
将读取2字节、4字节或8字节,具体取决于给定平台上int
的定义谢谢这里有几个相当大的洞
char
始终占用1个字节。这是唯一一种保证尺寸的类型。所有其他字节基本上都是1个或更多字节,并且足够大,可以容纳指定的值范围(16位表示short
或int
,32位表示long
,64位表示long
)
换句话说,您给出的尺寸非常常见,但不能保证
使用printf
:
- “%d”指定一个
int
- “%ld”指定一个
long int
- “%lld”指定一个
long int
同样,该标准实际上并没有指定机器有一个堆栈(还有一些,比如IBM大型机和旧的CRE),但是如果你只考虑抽象的行为需求,那么你所得到的肯定是LIFO(Stas-like)要求。对于给定的平台,任何整数类型的大小是多少,而无需咨询,并且可能是。但是,您可以确保
printf
格式字符串将正确的模式与给定实现中传递到堆栈上的正确大小的整数相关联。您的一些断言不正确,因为它们因平台而异。要确切地知道您的类型的宽度,请打开limits.h
和float.h
文件。您还可以使用sizeof
运算符
请记住,char
始终是一个字节,不管它有多少位。也就是说,在某些机器上,char
是8位,而在另一台机器上,char
是16位。在每种情况下,它都被视为一个字节。其他类型是字符的倍数许多问题……很多答案 OP:
long
:大小为4字节的整数值。A:
long
是一个最小范围为-2147483647到+2147483647的整数,因此它至少需要32位
OP:long
:大小为8字节的整数值。A:
long-long
是一个最小范围为-9223372036854775807到+9223372036854775807的整数,因此它至少需要64位
OP:type
short
、long
和long
后面通常跟有int
答:我看到的
short
、long
和long
更多的是它们自己,而不是后面的int
,除非是像C规范那样的迂腐用法。答:进一步(不是我的意见):
shortinti
与shorti
相同long int i
与long i
相同long int i
与long i
相同答:此外:
short signed int i
与short i
相同short
,signed
,int
可能以任何顺序出现,且结果相同
OP:但是,这不是必须的,我们可以在没有int
的情况下使用它们A:是的。见上文 OP:或者,我们可以只声明
int
,但不同的编译器可能会对其进行不同的解释。答:大小/范围可能会改变,但
short
与signed short
与signed short int
相同。这适用于“long”和“long long”,但不适用于“char”
OP:short
与short int
相同,但不一定与int
相同A:是的 OP:
long
是相同的