int i = 259; /* 03010000 in Little Endian ; 00000103 in Big Endian */
char c = (char)i; /* returns 03 in both Little and Big Endian?? */
Run Code Online (Sandbox Code Playgroud)
在我的计算机中它将03分配给char c并且我有Little Endian,但我不知道char转换是读取最低有效字节还是读取i变量指向的字节.
cni*_*tar 14
Endianness实际上并没有改变任何东西.它不会尝试存储其中一个字节(MSB,LSB等).
char
是无符号的,它将环绕.假设8位字符259%256 = 3char
已签名,则结果是实现定义的.谢谢pmg:C99标准中的6.3.1.3/3由于您从较大的整数类型转换为较小的整数类型,因此无论字节顺序如何,它都是最不重要的部分.如果你转换指针代替,不过,这将需要在地址字节,这将取决于端标记.
因此,c = (char)i
分配给最不显著字节c
,但c = *((char *)(&i))
将在地址分配的第一个字节i
到c
,这将是只小端系统同样的事情.
归档时间: |
|
查看次数: |
15564 次 |
最近记录: |