Объяснение объявления и вывода переменной в этом примере

#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, есть разница между == и = — и вы уже знаете, что это такое.