Skip to main content

SA0053:ビット単位のシフトが大きすぎます

オペランドのビット単位シフト(ビットシフト)を行う場合、オペランドのデータ型幅を超えていないか判断します。

理由:移動操作がデータ型の幅を超えると、定数が作成されます 0

回転シフトがデータ型の幅を超えている場合、読み取りが困難であるため、回転値を切り捨てる必要があります。

重要性:高い

63.
PROGRAM PLC_PRG
VAR
    byTemp1 : BYTE;
    wTemp2 : WORD;
    dwTemp3 : DWORD;
    lwTemp4 : LWORD;
END_VAR
byTemp1 := SHR(byTemp1, BYTE#25);
wTemp2 := SHL(wTemp2, BYTE#45);
dwTemp3 := ROR(dwTemp3, BYTE#78);
lwTemp4 := ROL(lwTemp4, BYTE#111);

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0053: ビット単位のシフトが大きすぎます