をchar型:長いの連合と私は8ビットプロセッサ用のコードに次のような場合は[]、バイト順
typedef union
{
unsigned long longn ;
unsigned char chars[4];
} longbytes;
longbytes.chars[0]
は常にlongbytes.longn
の最下位バイトになるだろうか、それが依存しませんエンディアン/コンパイラ/プラットフォーム/ターゲット/運などで?私は準拠したコードの逆アセンブリを見てきましたが、それは私の特定のケースでどのようになっているのですが、このコードが移植可能かどうかは不思議です。
、6.5.2.3を、脚注95は、」読み込みではありませんオブジェクトに値を格納するために最後に使用されたメンバと同じですが、値のオブジェクト表現の適切な部分は、6.2.6で説明されているように新しい型のオブジェクト表現として再解釈されますこれはトラップ表現かもしれない」だから、今日は準定義されています。 –
私は、この規格では、 'unsigned char'配列のための型打ちに対して特別な例外を作ったと思いました。 –
@DanielFischer:それでは、実際に実装が定義されています。私の答えは – Grizzly