Skip to main content

SA0053:按位移位太大

在操作数按位移位(bit shift)的情况下,检测是否超出了操作数的数据类型宽度

理由:如果移位操作超出数据类型宽度,则为常数 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:按位移位太大