指针算术的类型

use*_*003 3 c++

我正在看一些操纵数据缓冲区的旧代码.我有很多地方:

char *ptr1 ;
char *ptr2 ;
Run Code Online (Sandbox Code Playgroud)

然后我需要找到两者之间的字节数.

int distance = ptr2 - ptr1 ;
Run Code Online (Sandbox Code Playgroud)

我收到很多关于截断的警告.是什么类型的

 ptr2 - ptr1
Run Code Online (Sandbox Code Playgroud)

我已经找到了许多处理指针算法的答案,但奇怪的是,这个特定问题并不是答案.

指针算术

GMa*_*ckG 5

减去两个指针†的结果是a std::ptrdiff_t.它是一个实现定义的有符号整数; 它可能比int可以存储的更大.

有关更多信息,请参见http://en.cppreference.com/w/cpp/types/ptrdiff_t.

†如果指针指向同一数组的元素,则只能减去指针,否则它是UB.