Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

Разница между "==" и "=" в выражении - C++

20.03.2014, 14:02. Просмотров 285. Ответов 6
Метки нет (Все метки)

C++
1
if(x==0)
C++
1
if(x=0)
Вообще,раньше думал,что вторая запись запрещена.Но компилятор разрешил.Каков механизм второй записи?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2454 / 1626 / 238
Регистрация: 24.11.2012
Сообщений: 4,001
20.03.2014, 14:10     Разница между "==" и "=" в выражении #2
Иксу присваивается ноль. Возвращаемое значение - то, что было присвоено.
Тамика
Котовчанин
868 / 448 / 140
Регистрация: 16.02.2010
Сообщений: 2,821
Записей в блоге: 27
20.03.2014, 14:11     Разница между "==" и "=" в выражении #3
if(x==0)
Здесть проверка - равен ли х нулю.


if(x=0)
А здесь присвоение х значение ноль. А потом, если не ошибаюсь, идет неявное преобразование в bool. В данном случае х = 0, а ноль - это фолс. То есть условие не будет истинно.
Байт
Эксперт C
15536 / 9878 / 1484
Регистрация: 24.12.2010
Сообщений: 18,475
20.03.2014, 14:20     Разница между "==" и "=" в выражении #4
Цитата Сообщение от Игорюня Посмотреть сообщение
Но компилятор разрешил
Многие компиляторы дают здесь предупреждение. Конструкция вполне законна, хотя чаще всего является ошибкой программиста
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
20.03.2014, 15:59  [ТС]     Разница между "==" и "=" в выражении #5
То есть после присваения выполнится false?

C++
1
2
3
4
if(x=0)
cout<<1<<endl;
else
cout<<0<<endl;
По идее выведет 0.
Тамика
Котовчанин
868 / 448 / 140
Регистрация: 16.02.2010
Сообщений: 2,821
Записей в блоге: 27
20.03.2014, 16:31     Разница между "==" и "=" в выражении #6
Наверное мой пост проигнорируется, но да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 18:36     Разница между "==" и "=" в выражении
Еще ссылки по теме:

"Нарушение прав доступа при чтении "0x00000000"" C++
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
Почему вместо обратного слеша "\" выводит "¥" C++
Найти причины возникновения ошибки "Segmentation fault" в шаблонном лямбда-выражении (C++11) C++
C++ Программерский сленг: что означает "кастомный" и "кастить"?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17381 / 5619 / 350
Регистрация: 30.03.2009
Сообщений: 15,398
Записей в блоге: 26
20.03.2014, 18:36     Разница между "==" и "=" в выражении #7
Непонятный оператор из книги K&R

Семантика оператора "if (x=0)" более правильно выражается конструкцией "if ((x=0) != 0)". Т.е. записать в x значение 0, прочитать x, сравнить с нулём
Yandex
Объявления
20.03.2014, 18:36     Разница между "==" и "=" в выражении
Ответ Создать тему
Опции темы

Текущее время: 04:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru