这里有一个例子:如果你读到第4个要点:
指针可以显式转换为任何大到足以容纳其类型的所有值的整数类型。映射函数是实现定义的。[注:意在对那些了解底层机器寻址结构的人来说并不奇怪。--结尾注]
现在,是实现定义的,这里的i
的值是什么:
void *ptr = <some valid pointer value>;
uintptr_t i = reinterpret_cast<uintptr_t>(ptr);
char*
和int*
在Cray T90上具有不同的表示形式,因此:
int *i = <some int pointer value>;
char *c = reinterpret_cast<char *>(i);
这里,i
和c
在Cray T90上的表示形式不同(并且执行此转换肯定使用CPU指令)。
(我已经验证了这一点,Cray C/C++参考手册SR-2179 2.0第3.1.2.7.1章)