SA0053: Zu große bitweise Verschiebung
Funktion | Ermittelt bei bitweiser Verschiebung (Bitverschiebung/Bit-Shift) von Operanden, ob dessen Datentyp-Breite überschritten wurde. |
Begründung | Wenn eine Verschiebeoperation über die Datentypbreite hinausgeht, wird eine Konstante 0 erzeugt. Wenn eine Rotationsverschiebung über die Datentypbreite hinausgeht, dann ist das schwer zu lesen und der Rotationswert sollte deswegen gekürzt werden. |
Wichtigkeit | Hoch |
Beispiele:
PROGRAM MAIN
VAR
nBYTE : BYTE;
nWORD : WORD;
nDWORD : DWORD;
nLWORD : LWORD;
END_VARnBYTE := SHR(nBYTE, BYTE#8); // => SA0053
nWORD := SHL(nWORD, BYTE#45); // => SA0053
nDWORD := ROR(nDWORD, BYTE#78); // => SA0053
nLWORD := ROL(nLWORD, BYTE#111); // => SA0053
nBYTE := SHR(nBYTE, BYTE#7); // no error
nWORD := SHL(nWORD, BYTE#15); // no error