关于测试PC是big_endian/little_endian

作者分享了一个简单的测试程序,发现了两个主要错误:一是使用赋值而非比较运算符导致逻辑错误;二是对整型到字符型的转换理解有误,实际转换的是整数对应的ASCII码而非预想中的字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

记录下:

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

 

哎 猪着吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值