Я (по существу) попадались следующие в дикой природеНеопределенное поведение или ложноположительный
x = x = 5;
, который, по-видимому компилируется под более ранней версией GCC (генерирует предупреждение при НКУ 4.5.1). Насколько я могу судить, предупреждение генерируется точкой -Последовательность. Таким образом, мой вопрос заключается в том, что это нарушает формулировку в стандарте по манипулированию переменными между точками последовательности (т. Е. Это неопределенное поведение для спецификации) или это gcc ложно положительный (т. Е. Определяется поведение в спецификации)? Формулировка точек последовательности немного сложнее.
Я сказал, в основном потому, что я на самом деле наткнулся (в большем выражении) был
x[0][0] = x[0][0] = 5;
, но я не думаю, что это материал для предупреждения (пожалуйста, поправьте меня, если это к месту и не то, что я предполагал, суть проблемы).
Является ли оно нарушением формулировки в стандарте или нет, это ужасный код. Убей его Огнем! Пусть такое выражение никогда не будет затемнить ваш код снова. – abelenky
@abelenk согласился. Это не мой код, и я хотел быть уверенным, что это был UB, прежде чем я поместил его в CCB. – bpw1621