例如:
#include <stdio.h>
int main(void){
unsigned int x = 64;
x += 1023;
unsigned char y = x;
printf("%u\n", y);
return 0;
}
变量y
在我的计算机上保存值63
。当 unsigned int 转换为 unsigned char 时,C99标准是否保证存储最低有效字节,或者机器的字节顺序是否影响转换?< / p>
答案 0 :(得分:4)
标准说明了转换为无符号类型:
当整数类型的值转换为另一个整数类型时 除了_Bool之外,如果值可以用新类型表示,那么 没有改变。
否则,如果新类型是无符号的,则转换为 重复加或减一个以上的最大值 可以用新类型表示,直到值在范围内 新类型。
如果它不合适,这是一种说法价值包装的奇特方式。所以在你的情况下你总是得到63 ,在所有机器上,除非你的unsigned char
实际上可以存储超过255:它与字节序无关。
答案 1 :(得分:0)
Endianness对演员阵容无关紧要。只有C值很重要。