标准似乎并不要求发生任何促销,因为char是整数类型:
对于加法,两个操作数都应具有算术或无范围枚举类型,或者一个操作数应是指向完全定义的对象类型的指针,而另一个操作数应具有整型或无范围枚举类型
看来实现可能取决于底层架构允许的指针添加类型 - 因此如果架构支持address+BYTE- 一切都很好char- 如果不支持,它可能会提升到支持的最小地址偏移大小。
指针减法的结果定义为“std::ptrdiff_t”类型
当两个指向同一数组对象的元素的指针相减时,结果是两个数组元素的下标之差。结果的类型是实现定义的有符号整型;该类型应与标头中定义为 std::ptrdiff_t 的类型相同