>  2005/03/21 (月) 01:01:24        [qwerty]
> > 24ビットを16ビット+8ビットのデータで処理するよりも
> > 16+16ビットで8ビットだけ無視するほうが効率的
> 待て(;´Д`)8ビット損してるじゃないか

> > 想定されているアライン境界でしかメモリアクセスを許さない
> > アーキテクチャでは致命的な問題につながる可能性もありそうです。
> 
> PS2 (Linux)が、そういうアーキテクチャだったりします。なんだ
> けど、これがcastしまくりなライブラリがついていたりするんです。
> もう、楽しくってしょうがないです。

PS2にかぎらず、無印68000、PowerPC、SPARCあたりもアーキテクチャとしては
同様ですね。

サンプルコード

#include<stdio.h>

union hoge
{
 char c[5];
 long L;
} a = {1,2,3,4,5};

int main()
{
 printf("%8lX\n",*(long*)&a.c[1]);
}

Mac や SPARC では Segmentation fault になります。
x86 は黙って 05040302 という結果を出します。

参考:2005/03/21(月)00時54分14秒