根据当前的C标准,指针之间的差异类型为
如果
那么为什么标准引入了
ptrdiff_t
。同时,根据标准,数组下标可以是任何整数类型,最大的有符号整数类型目前是long long
。如果
ptrdiff_t
不是long long
,而是更小的话,那么上述两个语句就会产生矛盾,不是吗?那么为什么标准引入了
ptrdiff_t
类型,而不只是使用long long
作为指针差异呢?
unsigned long long
可作为数组下标并不代表所有可能的unsigned long long
值都是有效的数组下标值。(另外,指针之间的差值是带符号的。) - user2357112size_t
的范围,则结果是未定义的。数组的下标可以是任何整数类型。 - chux - Reinstate Monicasize_t
足够大,可以表示任何对象的大小,因此它的范围提供了所有对象大小的上界。 - melpomene