有关 size_t 的定义
最近在整理有关c标准库的文档,遇到了一个问题:size_t到底时个什么东西?因为很多地方都在用这个东西,如果没有搞清楚的话自己用着总感觉不踏实。首先,打开c11的标准看了看,里面有这样两短话
第一段:
size_t
which is the unsigned integer type of the result of the sizeof operator;
第二段:
the types used for size_t and ptrdiff_t should not have an integer conversion rank greater than that of signed long int unless the implementation supports objects large enough to make this necessary.
由此可以确定的两点时
1、size_t时个无符号整型
2、size_t最多是个signed long int
之后,我去我本机找并没有在stddef.h这个头文件中找到直接的定义,可能在别的文件里定义,没有找到。(我的环境时linux + gcc)
之后,我谢了这两句代码
printf("%zd\n",sizeof(size_t));
执行结果是8
我猜测在我本机上size_t应该时被定义成了unsigned long了。
不知道搞对了没有,希望之前关注过这个问题的朋友看看是否是这样。
也请用Visual Studio的朋友帮我找找看相关的头文件里面是如何定义的。
谢谢!