2

ビッグ エンディアンのマシンでlong変数を にキャストした場合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 に答える