早上写了一个简单的测试程序,没想到漏洞百出。
记录下:
void main()
{
int i = 1;
if ( *(char*)(&i)='1')
{
printf("little endian");
}
else
{
printf("big endian");
}
printf("*(char*)(&i) value is :%c",*(char*)(&i));
getch();
}
有两个错误~
1.判断if ( *(char*)(&i)='1')首先逻辑应该用==,这样一用成赋值了,然后接着由于赋值会使不管在哪个计算机上都会判断成little endian
2.( *(char*)(&i)=='1')这个就扯了
把int强制转换成char,之前存储的int型为1强制转换为字符型时是直接当字符型读的,即1对应的那个ASCII码;并没有自己想象的那么智能是把整型的1转化成字符型的49
哎 猪着吧~