Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выдает ошибку invalid lvalue in assignment, Вопрос о переменных 
V
    Опции темы
maxfol
Дата 19.11.2011, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.2.2009

Репутация: нет
Всего: нет



Код

float x,y;
int c = 7;
x = --c || y = 0;


ругается при компиляции : invalid lvalue in assignment. обьясните почему (C начал учить только сегодня, так что сильно не пинайте )).
PM MAIL   Вверх
boostcoder
Дата 19.11.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(maxfol @  19.11.2011,  12:17 Найти цитируемый пост)
x = --c || y = 0;

это ты из какого ЯП идею подхватил? напоминает ФП языки.

что за условие вообще?
PM WWW   Вверх
Estranged
Дата 19.11.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: нет
Всего: 3



Код

x = --c || y = 0;


Потому что у операторов С++ есть приоритет.
Вы думаете, что y = 0 выполнится раньше, но не угадали. Отчего ноль вы пытаетесь присвоить результату логического ИЛИ (||), что недопустимо, т.к. оператор = требует т.н. l-value, т.е. переменную, куда этот 0 можно записать, память, куда можно записать 0.

В итоге:
x = ((--c) || y) = 0;
1. с = с - 1
2. c ИЛИ y
3. куда ноль записать?

Надо задать правильный порядок выполнения операторов с помошью оператора скобки:
Код

x = --c || (y = 0);


В итоге будет вычислено логическое выражение, результат (истина, ложь) будет в x.
Еще скажу по секрету, что в y не будет записан 0. smile Потому что вычисление выражения будет прервано на этапе проверки истинности результата --c, т.к. результат всего логического выражения уже и так ясен.
PM MAIL   Вверх
Леопольд
Дата 19.11.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Цитата(maxfol @  19.11.2011,  12:17 Найти цитируемый пост)
ругается при компиляции
Так писать "нельзя". Если так уж нравится всё в одну строчку писать, то используйте либо запятую, либо точку с запятой (предпочтительнее)


Это сообщение отредактировал(а) Леопольд - 19.11.2011, 13:59


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
maxfol
Дата 19.11.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 22.2.2009

Репутация: нет
Всего: нет



Всем спасибо за ответы, это было из упражнения, выходит что ошибка.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.