big-endian中的整数强制转换

Integer casting in big-endian

本文关键字:转换 整数 big-endian      更新时间:2023-10-16

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

换句话说:

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

我知道小端序机器是这样的,但是大端序呢?

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

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

是。否则很多代码都会崩溃。