Renesas Synergy™

FAQ 1011892 : W0520068メッセージ(CC-RL)

Q : 質問

RL78コンパイラCC-RLを使用しています。次のような定数1をシフトする式を記述していますが、W0520068のメッセージが出力されます。  「W0520068:整数変換で結果の符号が反転しました。」  なぜ、符号反転と判定されるのでしょうか?
(式) a & (1 << b)


A : 回答

定数は int型で、最上位ビットは符号を表すビットです。
そのため、int型の1を左にビットシフトすると、最上位のビットの値に影響するのでメッセージが出力されています。
次のように、接尾語Uを使用して、明示的に符号なしであることを指定すればメッセージは出力されなくなります。
(例) a & (1U << b)

適用製品

CS+ (旧 CubeSuite+)
RL78ファミリ用Cコンパイラパッケージ
e² studio
他にご質問がございましたら、リクエストを送信してください