32ビット整数(実際には charsを表しますが、何でも)で一口演算を行う必要があります。
次のようなコードは安全ですか?
uint32_t input;
input = ...;
if(input & 0x03000000) {
output = 0x40000000;
output |= (input & 0xFC000000) >> 2;
つまり、「if」ステートメントでは、左側の uint32_t と右側でビットごとの操作を行っています...わかりません!
ハードコーディングされた "0x03000000" のタイプとサイズ (つまり、保存されているバイト数) を知っていますか?
一部のシステムが 0x03000000 を int と見なし、2 バイトだけでコーディングする可能性はありますか?