现在的位置: 首页 > 综合 > 正文

关于测试PC是big_endian/little_endian

2013年04月11日 ⁄ 综合 ⁄ 共 398字 ⁄ 字号 评论关闭

早上写了一个简单的测试程序,没想到漏洞百出。

记录下:

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

 

哎 猪着吧~

抱歉!评论已关闭.