Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99

Операции присваивания правоассоциативны, а что было бы, если бы они были левоассоциативны?

28.10.2021, 17:00. Показов 2486. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В моём учебнике по Java было написано следующее:
«Операции присваивания правоассоциативны. Это означает, что а = b = с равнозначно а = (b = с), что позволяет объединять операции присваивания в цепочку». Можно ли было бы объединить операции присваивания в цепочку, если бы они были левоассоциативны?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2021, 17:00
Ответы с готовыми решениями:

Найти вероятность того, что были сняты показания со второго датчика, если они оказались ошибочными
помогите решить задачи по Классической вероятности: 34.Для контроля влажности воздуха в музее установлены четыре датчика. Вероятности...

Как заставить программу не считать значения, если они уже были использованы?
Всем привет! Только начинаю изучение С. Стоит такая задача: Через стандартный поток ввода пользователем вводятся целые числа. Последним...

Как в VS откатить файлы кода, если ранее они были уже сохранены и VS была закрыта?
Как в VS откатить файлы кода, если ранее после изменений они были уже сохранены и VS была закрыта?

21
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
28.10.2021, 17:14
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
Можно ли было бы объединить операции присваивания в цепочку, если бы они были левоассоциативны?
Почему нет? Числа же складывают/перемножают.
0
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
28.10.2021, 18:04  [ТС]
Я не совсем поняла… Числа ведь приравнивают друг к другу, а не перемножают/складывают, как Вы сказали.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
28.10.2021, 18:48
Лучший ответ Сообщение было отмечено Julia Moskvina как решение

Решение

Julia Moskvina, смотри, если бы операция присваивания была бы левоассоциативна, то: a = b = c превратилось бы в (a = b) = c, что означало:
присвоить переменной a значение переменной b, затем переприсвоить переменную a значение переменной c, что достаточно бессмысленно само по себе, т. к. это было бы эквивалентно просто a = c.
1
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
28.10.2021, 22:04  [ТС]
Получается, всё-таки операция присваивания не может быть левоассоциативной?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
28.10.2021, 22:05
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
Получается, всё-таки операция присваивания не может быть левоассоциативной?
Прочитай еще раз мое предыдущее сообщение.
0
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
28.10.2021, 22:13  [ТС]
Получается, так как операции присваивания правоассоциативны, а=b=c равносильно a=(b=c), а если бы они были левоассоциативны, выстраивание цепочки было бы бессмысленно… А когда а=(b=c) мы переменной b присваиваем значение с или переменной с присваиваем значение переменной b?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
28.10.2021, 22:40
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
А когда а=(b=c) мы переменной b присваиваем значение с или переменной с присваиваем значение переменной b?
Посмотри в дебаггере, благо это проверяется элементарно.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38194 / 21127 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
29.10.2021, 08:17
Arsegg, я бы сказал, что выражение a=b не может быть lvalue (это лишено смысла)
1
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
29.10.2021, 11:10
Лучший ответ Сообщение было отмечено Julia Moskvina как решение

Решение

Вопрос из разряда "Нахиба попу баян". суть в том, шо так сложилось, шо в програмировании оператор присваивания всегда правоасоциативен, и имеет почти самый меньший приоритет. это приводит к тому, шо справа от него, можно записать выражение любой сложности, сначала програма его обчислит, и лишь потом, результат запишитт в переменую. будь он левоасоциативным, по сути нихиба бы не изменилось, писали бы не как сейчас(ф = х + у * й), а писали бы как в школьной тетрадке по математике (х + у + й = ф)
0
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
29.10.2021, 11:15  [ТС]
Допустим, что а=4; b= 3; c=6. Я выстроила цепочку а=b=с и вывела на экран значение а. Потом я заменила эту цепочку на выражение а=с. Вывелось то же самое значение, что и первом случае – 6! Получается, что выстраивание цепочек бессмысленно? Arsegg, Вы вчера мне написали, что если бы операции присваивания были правоассоциативны, это было бы бессмысленно. Но, опираясь на результаты моей программы, можно сказать, что и левоассоциативное присваивание тоже бессмысленно?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
29.10.2021, 11:19
Julia Moskvina, выведи значение переменной b.
0
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
29.10.2021, 11:21  [ТС]
Вывелось 6.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
29.10.2021, 11:24
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
Вывелось 6.
Какой можно сделать из этого вывод?

Добавлено через 1 минуту
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
что если бы операции присваивания были правоассоциативны, это было бы бессмысленно.
Я писал про левоассоциативный оператор присваивания (гипотетический), btw.
0
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
29.10.2021, 11:25
Julia Moskvina, А шо по вашему должно было быть? или вы думаете шо если Моня ходит в гости к Саре так он уже не еврей?

ЗЫ -суть в том шо все три переменых получают одно значение, значение переменной с, будь оператор левоасоциативен, все три переменный получили бы значение переменной а.

ЗЗЫ. Я таки дико извиняюсь, но если не ошибаюсь, то это написано даже в святом писании от Oracle
1
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
29.10.2021, 11:25  [ТС]
Что в переменную b вложили значение переменной с.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
29.10.2021, 11:27
Цитата Сообщение от InvalidCode Посмотреть сообщение
будь оператор левоасоциативен, все три переменный получили бы значение переменной а.
Не совсем так: переменной a присваивалось бы значение c, тогда как значение переменной b осталось нетронутым.
0
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 99
29.10.2021, 11:30  [ТС]
InvalidCode, а разве в случае, когда оператор присваивания был бы левоассоциативны, было бы не такое выражение (а=b)=c? То есть, в переменную a вложено значение b или в переменную b вложили а?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
29.10.2021, 11:31
Цитата Сообщение от Julia Moskvina Посмотреть сообщение
То есть, в переменную a вложено значение b или в переменную b вложили а?
Это не Python. В Java так это не работает.
1
 Аватар для InvalidCode
295 / 470 / 86
Регистрация: 26.02.2018
Сообщений: 931
Записей в блоге: 2
29.10.2021, 11:44
Лучший ответ Сообщение было отмечено Arsegg как решение

Решение

Julia Moskvina, если вам сделали обрезание, то это, таки на всю жизнь, но это не значит шо вы уже стали евреем. суть в том, шо правоасоциативные оператьры, сначала исчисляют все то, шо стоит справа от них тобись цепочка а=б=с равнозначна б = с, а = б. комуняки(левые операторы) делают все наоборот, сначала исчисляют все то, шо слева от них тоест цепочка а=б=ц равнозначна б = а, ц = б

Добавлено через 9 минут
Julia Moskvina, Тут шобы разобраться нужно не один литр выпить. а лучше почитать эту книгу, если канечно осилите. в ней расказывается о принципах работы и разработки компиляторов, и там очень хорошо описаны принципы левой и правой ориентации операторов.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2021, 11:44
Помогаю со студенческими работами здесь

Какое место число занимает в существующем ряду введенных чисел, если бы они были отсортированы по возрастанию?
Суть в следующем: С клавиатуры вводится большое количество чисел (их может быть несколько десятков тысяч) Вводятся они в не...

Если все числа последовательности одинаковые вывести, что они одинаковые,если разные - вывести, что они разные
Добрый час суток. Нужно написать программу: Дано n число и последовательность из n чисел.Если все числа одинаковые вывести,что они...

Metro UI Framework. Как сделать вкладки в tabcontrol, что бы они были слева?
Здравствуйте, кто имел дело с metro ui framework, расскажите, как сделать нормальные вкладки в tabcontrol, что бы они были слева? а то оно...

Сделать тест из 20 вопросов, но что бы они каждый раз были в случайном порядке
Доброго времени суток форумчане. Помогите пожалуйста с созданием теста на c#. Суть вопроса в том что мне надо сделать тест из 20 вопросов,...

при нажатии на ссылку, если были открыты другие ссылки с текстом - то они автоматом закрывались и открывалась вновь нажатая
Ребят есть вот такой вот код <script> function collapsElement(id) { if ( document.getElementById(id).style.display !=...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru