Было написано что-то вроде такого:
b=2;
c=3;
d=4;
Я решил в начало добавить присваивание для a. Но начало строчки я написал, а значение дописать забыл. Получилось:
a=
b=2;
c=3;
d=4;
И это спокойно скомпилировалось и заработало (правда, неправильно). А почему? Потому что Си поддерживает цепочечные присваивания. И где у программиста новая строка -- ему плевать. Он воспринял этот текст следующим образом:
a=b=2;
c=3;
d=4;
b=2;
c=3;
d=4;
Я решил в начало добавить присваивание для a. Но начало строчки я написал, а значение дописать забыл. Получилось:
a=
b=2;
c=3;
d=4;
И это спокойно скомпилировалось и заработало (правда, неправильно). А почему? Потому что Си поддерживает цепочечные присваивания. И где у программиста новая строка -- ему плевать. Он воспринял этот текст следующим образом:
a=b=2;
c=3;
d=4;
20.06.2021 в 01:24
20.06.2021 в 01:34
20.06.2021 в 10:34
20.06.2021 в 17:55
Но я, к сожалению, не скажу, потому что ни GCC 10, ни Clang 11 не выдали тут никаких предупреждений (-Wall -Wextra). Даже -Wmisleading-indentation это не ловит! Отвратительно.
Тестировал на вот таком коде:
-- Minoru
20.06.2021 в 17:55
-- Minoru
20.06.2021 в 17:56
-- Minoru