#c #variables #declaration
#c #переменные #объявление
Вопрос:
Я в замешательстве от этого примера:
int x = 5;
if (x==5) cout << x; // output 5
if (x==6) cout << x;
if (x=6) cout << x; // output 6
x = 0;
if (x=0) cout << x;
x = 5;
if (x-5) cout << x;
if (x-6) cout << x; // output 5
Сначала я понимаю if (x==5)
, но почему он выводит 6 if (x=6)
при x = 5 и почему он не выводит 0 в if(x=0)
Комментарии:
1. Подумайте о том, что это значит :
x=6
.2. Операторы
=
(присваивание),==
(равно) не совпадают.
Ответ №1:
if (x=6)
означает не сравнение, а присвоение. Вы присваиваете 6 x, а возвращаемое значение выражения равно 6, что не равно 0, поэтому оно приобретает значение true .
аналогично if (x=0)
выражению x = 0, значение 0 увеличивается, поэтому это означает if(0)
Ответ №2:
Особенность компьютеров в том, что они чрезвычайно буквальны. Пропущенная точка с запятой или добавленный символ могут полностью изменить функцию программы. Поэтому вам нужно быть таким же осторожным, как компьютер, при работе с программами.
Как упоминал @juanchopanza, есть разница между ==
и =
— и вы уже знаете, что это такое.