- 论坛徽章:
- 0
|
-------------------------------------------------------------------------------------------------------------
上文我能理解,知道指针类型决定了 *(指针)的值得取值范围。但是下文,我就不理解了。
unsigned int a = 0xfffffff7;
printf("%x\n", *((int *)&a));
printf("%x\n", *((char *)&a));
运行结果:
0xfffffff7
0xfffffff7
--------------------------------------------------------------------------------------------------------------
你取的数太特殊了,printf("%x\n", *((char *)&a)); 将会打出一个8bit的数即f7, 但是要求要是%x形式输出,所以高位将会补1,输出结果依旧是0xfffffff7
这样定义一下试试 unsigned int a = 0x1111fff7; 去验证一下你的想法
输出应该是 0x1111fff7 和0xfffffff7
指针本身就是一个地址(一个32bit的数),加上类型限制后,这个地址块中将存放该类型的数据。 |
|