|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.09.2010, 23:41 | #1 |
Регистрация: 05.03.2010
Сообщений: 3
|
z+=a++-b--==c?d++:c
добрый вечер!
z+=(a++-b--==c)?d++:c не подскажите как правильно читать и понимать подобные вещи? и как компилятор это воспринимает и как происходит анализ? где про это можно прочитать? Спасибо! Последний раз редактировалось hundush; 13.09.2010 в 23:42. Причина: ошибка набора |
13.09.2010, 23:45 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 16,219
|
Подобные вещи лучше просто не писать.
E-Mail: arigato.freelance@gmail.com
|
13.09.2010, 23:48 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Код:
Код:
Код:
P.S. Arigato, определенно! А уж если очень надо, то расставлять скобки где только можно.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
13.09.2010, 23:50 | #4 |
Регистрация: 05.03.2010
Сообщений: 3
|
да, знаю.
мне интересно это с академической точки зрения. |
14.09.2010, 07:51 | #5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
z+=(a++-b--==c)?d++:c
В данном примере z += не выполнится, а выдаст ошибку так как операция "?" не предусматривает присвоения каких либо значений вне пределов функции. Правильное написание кода: (a++) - (b--) == c ? z += d++:z += c; В данном примере обыгрывается примерно такая ситуация: Если к "а" прибавить единицу, а из "b" вычесть единицу и уменьшить "a" на "b", то при совпадении чисел с "с", присвоить "z" - "d" увеличенное на 1. Если числа не совпадают, ток "z" прибавить "с".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
14.09.2010, 08:13 | #6 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,695
|
Цитата:
|
|
14.09.2010, 08:22 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Цитата:
I'm learning to live...
|
||
14.09.2010, 08:49 | #8 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
Проверил. Суммирует. Спасибо не знал. Нигде в документации не описано, а проверять небыло необходимости.
Насчёт точки с запятой, - это просто описка автора темы. Вот корректный код, который понятен всем: (a-b) == c ? z += d++ : z += c; a++; b--;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 14.09.2010 в 08:57. |
14.09.2010, 10:14 | #9 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,336
|
(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 |
14.09.2010, 18:58 | #10 | |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 328
|
Цитата:
Код:
|
|