总之,size_t永远不会是负的,而且它最大限度地提高了性能,因为它是一个无符号整数类型,它足够大-但不太大-可以表示目标平台上最大对象的大小。尺寸永远不应该是负面的,事实上size_t是无符号类型。还有,因为size_t是无符号的,您可以存储大约是相应有符号类型的两倍的数字,因为我们可以使用符号位来表示大小,就像无符号整数中的所有其他位一样。当我们再得到一位时,我们将可以表示的数字范围乘以约2的倍数。所以,你会问,为什么不直接用一个unsigned int?它可能无法容纳足够大的数字。在实现中unsigned int是32位,它能表示的最大数字是4294967295..某些处理器,例如IP16L32,可以复制大于4294967295字节。所以,你会问,为什么不使用一个unsigned long int?它要求在某些平台上进行性能测试。标准C要求long至少占32位。IP16L32平台实现了每一个32位长的16位字.这些平台上的几乎所有32位操作符都需要两条指令,如果不是更多的话,因为它们使用两块16位块的32位。例如,移动32位长通常需要两个机器指令-一个移动每个16位块。使用size_t避免这种性能损失。根据这篇精彩的文章,“类型”size_t是一个类型,它是某些无符号整数类型的别名,通常是unsigned int或unsigned long,但可能甚至unsigned long long..每个标准C实现都应该选择足够大但不超过需要的无符号整数来表示目标平台上最大对象的大小。“