读书人

关于C语言的一些细节议论

发布时间: 2013-07-09 09:50:48 作者: rapoo

关于C语言的一些细节讨论


#define HEAD 0x1234

int main()
{
unsigned char uc_buff[4];


uc_buff[0] = (HEAD >> 8) & 0xFF;
uc_buff[1] = HEAD & 0xFF;
//or
//uc_buff[0] = (unsigned char)(HEAD >> 8);
//uc_buff[1] = (unsigned char)HEAD;
//...
return 0;
}

问题是上述写法中通过 &0xFF 和强制类型转换那个更符合规定?(上述代码运行在嵌入式linux平台下,在别的平台下运行会有什么问题么?) Linux C 嵌入式
[解决办法]
强制转换牵涉一个平台的大端小端问题。
[解决办法]
强制类型转换 的健壮性能高一点……,在其他系统平台中,强制类型转换出啥问题
[解决办法]
使用big-endian和little-endian的编译器分别编译了两种代码,汇编语言完全一样,看起来不存在差异。。

一般代码的习惯是第一种&0xff的吧,第二种方式还没看到过
[解决办法]
实际效果上没有区别吧。

读书人网 >UNIXLINUX

热点推荐