【发布时间】:2014-07-03 10:39:58
【问题描述】:
当我们执行以下操作时实际会发生什么: 1)
int i = -1; // 32 bit
void *p;
p = reinterpret_cast<void*>(i)
在 64 位架构上,sizeof(void*) == 8
2)
long long i; // 64 bit
void *p = (unsigned int)(-1);
i = retinterpret_cast<long long>(p)
关于 32 位架构 sizeof(void*) = 4
我大致了解结果会是什么,但我希望有人根据 C++ 标准来描述机制以便更好地理解。
在第二种情况下,行为类似于“整体促销”(4.5)中描述的行为(我将是-1) 对于“int - unsigned long”的情况,那么我们通常说指针转换为有符号整数吗?
3)
int i = ...;
unsigned long long L = ...;
i = L;
这里适用什么规则?
【问题讨论】:
标签: c++ casting implicit-conversion