【发布时间】:2014-02-08 10:02:58
【问题描述】:
我最近回答了一个关于 SO 的问题,在此过程中发现自己对一些事实有点不确定,所以我想对这些事实进行第二次断言:
-
C 和 C++ 中的整数类型:
char:1字节大小的整数值。short:2字节大小的整数值。long:4字节大小的整数值。long long:8字节大小的整数值。
short、long和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 long int值。所以:
-
printf("%ld"...)将在任何给定平台上读取 4 个字节。-
printf("%lld"...)将在任何给定平台上读取 8 个字节。-
printf("%d"...)将读取 2 个字节或 4 个字节或 8 个字节,具体取决于给定平台上int的定义。
上面的描述有空洞吗?
谢谢
【问题讨论】:
-
"通常后跟
int" - 不是大多数现代编码风格。 -
int的大小不需要与任何其他整数类型相同。 -
short、long、long long类型后面通常跟int。号
-
@ta.speot.is:这个评论不是很有帮助。具体说法有误吗?如果是,它有什么问题?请阅读其后的两个陈述。
-
为什么不,嗯,阅读标准?