use*_*658 1 c int c99 fixed-width long-integer
在这里没有得到我的问题的详细答案.我想我会从不同角度解决它.
有人能够解释用于确定C99固定宽度整数类型的基础类型的选择标准:
[u]int_fast[n]_t
[u]int_least[n]_t
[u]int[n]_t
Run Code Online (Sandbox Code Playgroud)
对于给定的处理器,如果'long'和'int'具有相同的大小(sizeof(int)== sizeof(long)),那么为什么'long'将被用于'int',反之亦然.
作者的心血来潮<stdint.h>.
鉴于int并且long具有相同的大小(并假设它们具有相同的表示和其他特征),[u]int_{,_fast,_least}32_t只要一个或多个类型满足标准的要求,它们应该用于定义它们中的哪一个并不重要.
好吧,这不是很真实; 它可以在某些情况下有所作为. int而且long,即使它们的大小相同,仍然是截然不同且不兼容的类型.例如,考虑到int32_t被typedef编或者作为int或如long,下面的程序:
#include <stdint.h>
#include <stddef.h>
int main(void) {
int32_t *p32 = NULL;
int *ip = p32;
long *lp = p32;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
违反了约束,并且需要诊断或者上的声明ip 或关于的声明lp,这取决于如何int32_t定义.但是你应该避免编写这样的代码.
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |