size_t总是unsigned int

Pil*_*pel 4 c++ size-t

是否存在任何已size_t定义为其他内容的实现unsigned int?在我工作的每个系统下,它被定义为unsigned int,所以我只是好奇.

Joh*_*erg 5

不。但它是无符号整数类型。它不需要特别是int

对于 C++

http://en.cppreference.com/w/cpp/types/size_t

C++ 标准部分 18.2.6

该类型size_t是实现定义的无符号整数类型,它足够大以包含任何对象的字节大小。

对于 linux; “在 linux 中定义的 c++ size_t 在哪里”给出long unsigned int

对于 C

(这个问题最初被标记为 C 和 C++。)

看看这里的答案:

32 位与各种 64 位数据模型的 sizeof(size_t) 是多少?

  • 并非所有无符号整数都是“unsigned int”。 (2认同)

pmd*_*mdj 5

x86-64和aarch64(arm64)Linux,OS X和iOS都size_t最终被定义为unsigned long.(这是LP64模型.这种事情是平台的ABI的一部分,它也定义了诸如函数调用约定之类的东西.其他架构可能会有所不同.)甚至32位x86和ARM架构unsigned long也在这些操作系统上使用,尽管long碰巧与int那些情况下的表示相同.

我很确定它是Win64 上的unsigned __int64/ unsigned long long.(使用LLP64型号)