C99 第 6.5.6 节,
如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则求值不会产生溢出;否则,行为是未定义的
说size_t是 [0..3] 之一。如果char数组大小为 4,索引为 [0..3],最后一个元素后面的一个元素将为索引 4,这会溢出size_t。那么,SIZE_MAX - 1由于这种情况,最大对象大小(以字节为单位)会是 3, [0..2], 最大索引 吗?换句话说,SIZE_MAX是否保证不是有效的数据索引?
第 6.5.3.3 节,
如果提升的类型是无符号类型,则表达式 ~E 相当于该类型可表示的最大值减去 E。
这始终是2^n-1奇数。