字符变量赋值问题
一程序如下:
main()
{
union {char c;char i[4];}z;
z.i[0]=0x39;z.i[1]=0x36;
printf( "%c\n ",z.c);
}
程序中z.i[0]=0x39;z.i[1]=0x36;挺让人困惑,z.i[0]实际相当于字符变量,字符变量可以接受整型数据或单个字符,这都没问题.可它能不能接受16进制的数据呢?如果能,该数据在此变量中又以什么样的形式保存呢?如果以整型格式或字符型格式输出该数据,又会有什么样的结果?
[解决办法]
union {char c;char i[4];}z;//union是一种节省空间的类,存放方式从低地址到高地址。
z.i[0]=0x39;z.i[1]=0x36;
printf( "%c\n ",z.c);
//======
char 型数据 能接受16进制的数据.
计算机里面存放的实质上全部是数据,不管字符串还是int型
如果以整型格式或字符型格式输出该数据,又会有什么样的结果?
//========
整型则为:57
字符型则为: '9 '