Gibt es eine GCC-Warnung, die Bitverschiebungsvorgänge bei vorzeichenbehafteten Typen erkennt?
Wenn ich die C ++ - ISO-Spezifikation (Abschnitte 5.8.2 und 5.8.3) nach rechts lese, ist die Rechtsverschiebung von Typen mit negativem Vorzeichen implementierungsspezifisch und die Linksverschiebung undefiniertes Verhalten.
Daher möchte ich in unserem alten Quellcode Shift-Operationen für signierte Typen finden, die wir mit g ++ 4.8.2 kompilieren.
Leider konnte ich im Internet keine solche Option findenHandbuch. Ich kann diesen Code zum Beispiel mit "g ++ -Wall -Wextra -pedantic" ohne Warnung kompilieren:
int si = -1;
int left = si << 1; // -2 (multiplication by 2, sign is preserved)
int right = si >> 1; // -1 (no change, only 1s)
Kann mir jemand sagen, ob es eine solche Warnung gibt und wenn nicht, warum es gcc egal ist?