Есть ли предупреждение GCC, которое обнаруживает операции сдвига битов для подписанных типов?

Если я читаю спецификацию ISO C ++ (разделы 5.8.2 и 5.8.3) справа, сдвиг вправо с отрицательными знаковыми типами зависит от реализации, а поведение сдвига влево не определено.

Поэтому я хотел бы найти операции сдвига для подписанных типов в нашем унаследованном исходном коде, который мы компилируем с помощью g ++ 4.8.2.

К сожалению, я не смог найти такой вариант вруководство, Я могу, например, скомпилировать этот код с "g ++ -Wall -Wextra -pedantic" без предупреждения:

int si    = -1;
int left  = si << 1; // -2 (multiplication by 2, sign is preserved)
int right = si >> 1; // -1 (no change, only 1s)

Может кто-нибудь сказать мне, если есть такое предупреждение, и если нет, почему gcc не заботится об этом?

Ответы на вопрос(2)

Ваш ответ на вопрос