unsigned char a, b;
b = something();
a = ~b;
静的アナライザーは、おそらくb
ビットが反転される前にintにプロモートされ、結果がint型になるため、最後の行の切り捨てについて不平を言いました。
プロモートされたintの最後のバイトにのみ関心があります。0x55の場合b
は、0xAAである必要a
があります。私の質問は、C仕様は切り捨てがどのように発生するかについて何かを述べているのか、それとも実装が定義されている/定義されていないのかということです。私が期待する値が常に割り当てられることが保証されていa
ますか、それとも適合プラットフォームでうまくいかない可能性がありますか?
もちろん、割り当てる前に結果をキャストすると静的アナライザーが無音になりますが、そもそもこの警告を無視しても安全かどうかを知りたいと思います。