在big-endian机器中,如果我有一个long
变量并将其转换为char
,语言规范是否保证我会在演员之后得到最低有效位?
换句话说:
long a = 50;
char b = (char)a;
assert(b == 50); /* Is it true? */
我知道小端机器也是如此,但是big-endian呢?
答案 0 :(得分:5)
...如果可以在目标类型(和位字段宽度)中表示,则值不变;否则,该值是实现定义的。 (§4.7/ 3)。
由于char
必须能够容纳至少127的值,因此在这种情况下的结果必须为50。
答案 1 :(得分:1)
是。否则会有很多代码破坏。