2

在大端机器中,如果我有一个long变量并将其转换为 a char,语言规范是否保证我将在转换后获得最低有效位?

换句话说:

long a = 50;
char b = (char)a;
assert(b == 50); /* Is it true? */

我知道这对于小端机器来说是正确的,但是大端机器呢?

4

2 回答 2

5

...如果它可以在目标类型(和位域宽度)中表示,则该值不变;否则,该值是实现定义的。(§4.7/3)。

由于char必须能够容纳至少 127 的值,因此在这种情况下,结果必须为 50。

于 2012-07-07T04:01:33.037 回答
1

是的。否则很多代码会中断。

于 2012-07-07T03:58:22.400 回答