34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,406
1

Ошибка: выражение должно быть допустимым для изменения левосторонним значением. Что это?

04.10.2017, 21:11. Показов 1955. Ответов 5
Метки нет (Все метки)

Добрый день!
Строка в коде
C++
1
2
3
const int mx=4;
if(top==(mx-1))//mx это размер массива
...
Но если пишу
C++
1
if(top==--mx)
То получаю ошибку для "--" требуется левостороннее значение, то есть выражение должно быть допустимым для изменения левосторонним значением.
Что это значит, в чём ошибка?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2017, 21:11
Ответы с готовыми решениями:

Ошибка: выражение должно быть допустимым для изменения левосторонним значением
Делаю односвязный список. #include "stdafx.h" #include "locale.h" #include "math.h"...

Ошибка: Выражение должно быть допустимым для изменения левосторонним значением
Всем привет. У меня есть очередь, состоящую из объектов класса classA, которую нужно заполнить из...

Ошибка: Выражение должно быть допустимым для изменения левосторонним значением
class ts_ch { int zn; public: ts_ch() { zn=0; } ts_ch(int a) {

Выражение должно быть допустимым для изменения левосторонним значением
struct ITEM { struct { char N; char A; char S; } NAS; char vers; }; struct LIST {

5
Модератор
Эксперт С++
12418 / 9990 / 6015
Регистрация: 18.12.2011
Сообщений: 26,731
04.10.2017, 21:26 2
нельзя mx уменьшать на 1, т.к. у Вас mx - константа
0
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,406
04.10.2017, 21:39  [ТС] 3
zss,
Но
C++
1
if(top==(mx-1))
Работает
0
283 / 231 / 114
Регистрация: 07.09.2016
Сообщений: 584
04.10.2017, 22:22 4
оо, иц миракл!
выражение (mx-1) изменяет mx? не изменяет! значит все ок.
1
570 / 352 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
04.10.2017, 22:44 5
Fatmarmelad, -- оператор декремента, он уменьшает значение переменной, т.е. --mx уменьшит значение mx на единицу, а выражение mx -1 не уменьшит значение, а вернет результат выражения, т.е. mx - 1 это уже выражение. Разница в том, что -- эквивалентно -= а это операция с присваиванием, а mx - 1 просто выражение вычитания без присваивания.
0
Модератор
Эксперт по электронике
8729 / 6522 / 884
Регистрация: 14.02.2011
Сообщений: 22,827
04.10.2017, 23:14 6
Цитата Сообщение от Avaddon74 Посмотреть сообщение
-- эквивалентно -=
я бы еще расшифровал
C++
1
--mx;
это тоже, что и
C++
1
mx=mx-1;
здесь присутствует присвоение которого в
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
mx-1
нет

Добавлено через 2 минуты
Fatmarmelad,
утрируем задачу
C++
1
if(top==(4-1))
можно написать, а вот
C++
1
if(top==--4)
уже нет
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2017, 23:14
Помогаю со студенческими работами здесь

Выражение должно быть допустимым для изменения левосторонним значением
Есть структура: struct Airport_Pass { int Distance; char Departur; char Destination; };...

Выражение должно быть допустимым для изменения левосторонним значением
Получаю ошибку в переменной х в if (0 < x && x < 100) { if ( x == 1 || x == 21 || x == 31 || x...

Выражение должно быть допустимым для изменения левосторонним значением
Выдает ошибку на P = s; #include <iostream> #include <iomanip> #include <string> using...

Выражение должно быть допустимым для изменения левосторонним значением
Здравствуйте! Подскажите, пожалуйста, в чем заключается ошибка и как ее исправить "Выражение...

Выражение должно быть допустимым для изменения левосторонним значением
//Структура пользователя программой struct User { char Login; char Password; }; User...

Выражение должно быть допустимым для изменения левосторонним значением
Писал программу для вывода массива в виде спирали, но при обработке условий движения спирали выдало...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru