整数转换为big-endian

时间:2012-07-07 03:54:38

标签: c++

在big-endian机器中,如果我有一个long变量并将其转换为char,语言规范是否保证我会在演员之后得到最低有效位?

换句话说:

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

我知道小端机器也是如此,但是big-endian呢?

2 个答案:

答案 0 :(得分:5)

  

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

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

答案 1 :(得分:1)

是。否则会有很多代码破坏。