![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 05.03.2010
Сообщений: 3
|
![]()
добрый вечер!
z+=(a++-b--==c)?d++:c не подскажите как правильно читать и понимать подобные вещи? и как компилятор это воспринимает и как происходит анализ? где про это можно прочитать? Спасибо! Последний раз редактировалось hundush; 13.09.2010 в 23:42. Причина: ошибка набора |
![]() |
![]() |
![]() |
#2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,583
|
![]()
Подобные вещи лучше просто не писать.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]() Код:
Код:
Код:
P.S. Arigato, определенно! А уж если очень надо, то расставлять скобки где только можно.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#4 |
Регистрация: 05.03.2010
Сообщений: 3
|
![]()
да, знаю.
мне интересно это с академической точки зрения. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
z+=(a++-b--==c)?d++:c
В данном примере z += не выполнится, а выдаст ошибку так как операция "?" не предусматривает присвоения каких либо значений вне пределов функции. Правильное написание кода: (a++) - (b--) == c ? z += d++:z += c; В данном примере обыгрывается примерно такая ситуация: Если к "а" прибавить единицу, а из "b" вычесть единицу и уменьшить "a" на "b", то при совпадении чисел с "с", присвоить "z" - "d" увеличенное на 1. Если числа не совпадают, ток "z" прибавить "с".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,718
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Проверил. Суммирует. Спасибо не знал. Нигде в документации не описано, а проверять небыло необходимости.
Насчёт точки с запятой, - это просто описка автора темы. Вот корректный код, который понятен всем: (a-b) == c ? z += d++ : z += c; a++; b--;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 14.09.2010 в 08:57. |
![]() |
![]() |
![]() |
#9 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
(a-b) == c ? z += d++ : z += c;
это бред. как раз так никто и не пишет z += (a - b == c) ? d++ : c; ++a; ++b; а вообще и изначальный код вполне ясен. хоть и есть пост инкремент, но переменные используются по 1 разу, никакой неоднозначности
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 328
|
![]() Цитата:
Код:
|
|
![]() |
![]() |