内存大小并未改变,只是让char *o 指针指向了int 型的低位。
调试是硬道理!
程序:
#include
int main()
{
int i=789;
char *o=(char *)&i;
printf("%d, %c\n", i, *o);
return 0;
}
调试结果:
没有意义的,o指向的是i的地址,一个不确定的16进制数,转成char,表示范围减小,数据被截断,仍然不知道是什么值
输出ASCII码值为i的字符,比如说i=97,按你说的转换后就会输出a字符
*0这个指针型的空间里存的int i的地址。
如果把i强制转换成char型。
是相当于又开辟了一个char 的空间。
你输出i就是i。
输出char型就是char型。
1楼说的差不多,但是输出的结果和你这个板子的存储方式是有关系的。你需要看一些大端存储和小端存储的知识。输出的结果不一定是int的最低位,也可能是最高的两位,你自己代码试试。