我在某些(不是全部)64 位 linux 上遇到了一个奇怪的问题,其中int 值 16被截断为零。
是截断是因为将 int 转换为 void* 并再次转换回 int (了解这不是一个好习惯)
- 16 变为 hex-10 和http://qb64.net/wiki/index.php?title=%26B
虽然 void* 在 64 位操作系统上是 8 字节,但它只能估计 LSB?这是原因吗??如果是这样,为什么这一直不容易重现?
或者这是由于大端?
示例源代码如下
样品来源
int main() {
int i = 0;
void *ptr = NULL;
printf("\nsizeof - void(*) : %d , int : %d", sizeof(void*), sizeof(int));
for(i = 0; i < 20; i++) {
ptr = &i;
printf("\n%d", *((int*)ptr));
}
return 0;
}