2

例如:

#include <stdio.h>

int main(void){
    unsigned int x = 64;
    x += 1023;

    unsigned char y = x;

    printf("%u\n", y);
    return 0;
}

该变量y保存63我机器上的值。C99 标准是否保证将unsigned int转换为unsigned char时将存储最低有效字节,或者机器的字节顺序是否会影响转换?

4

2 回答 2

4

该标准说明了如何转换为无符号类型:

当整数类型的值转换为_Bool以外的其他整数类型时,如果该值可以用新类型表示,则保持不变。

否则,如果新类型是无符号的,则在新类型可以表示的最大值的基础上重复加减一,直到该值在新类型的范围内。

这是一种奇特的说法,如果它不合适,价值就会环绕。因此,在您的情况下,您将始终在所有机器上获得 63,除非您unsigned char实际上可以存储超过 255 :它与字节顺序无关。

于 2013-03-27T21:27:56.750 回答
0

字节顺序对演员来说并不重要。只有 C 值很重要。

于 2013-03-27T21:28:31.703 回答