149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Мало того, что я написала if(var1=var2) вместо if(var1==var2), так у меня ещё и обе переменные были равны нулю. Я битых 2 часа искала почему оно не работает. Хочу обратно в ДотНет, который ругается на небуллевое условие ифа;о(((
Но это всё совершеннейшая фигня, по сравнению с точкой с запятой после define в С. Вот это было весело...
В Си все строки-операторы завершаются точкой с запятой. И это настолько входит в привычку, что ставишь её буквально везде. Ну я и поставила точку с запятой в конце директивы препроцессора, заменяющей все вхождения строки Х на строку Y _до_ компиляции. То есть аболютно валидный код оказался разбит тучей символов означающих конец строки, компилятор выдал мне ошибки в количестве раза в 3 превышающем количество строк в программе. Естественно, реальной ошибки в списке ошибок не было;о)
а ещё блин хрень в том, что выражение под if(var1=var2) будет булевым)) и всегда true если присвоение сработало))
А вот фигушки. Выражение var1=var2 равно значению var2 и парсится в true, если var2!=0, и в false, если var2==0 То есть при var2=0 присвоение происходит, но условный блок не выполнится никогда.