реклама на сайте
подробности

 
 
> тернарный оператор
DASM
сообщение Oct 8 2013, 08:19
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



int test=2, a = 55, b = 22;
(test==1) ? a = 1 : b = 2;
printf("%d %d\n", a, cool.gif;
В голоМ С некорректна (С99) тоже, как я понимаю вопрос приоритетов (они в одной строчке)
Но в С++ проходит без единой запинки, да еще и выдает вполне ожидаемые результаты. Это что за сюрприз на старости лет ?



Похоже тут отличие присвоения от иницииализации. Хорошая тема валить на собеседовании
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DASM
сообщение Oct 8 2013, 08:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Код
int test=1, a = 55, b = 22;
(test==1) ? a = 1 : b = 2;
printf("%d %d\n", a, b);

Каков результат ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 8 2013, 09:17
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (DASM @ Oct 8 2013, 11:58) *
Каков результат ?
C++ - "1 22", C - error: lvalue required as left operand of assignment, причем на b = 2. a = 1 кушает и выполняет. Не понимаю.


QUOTE (ViKo @ Oct 8 2013, 12:06) *
У оператора присваивания ( = ) приоритет ниже, чем у тернарного ( ? : ). - В скобки его!
А... точно. А в плюсах у них одинаковый приоритет, поэтому они группируются согласно правилам этого приоритета, т.е. справа налево.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DASM   тернарный оператор   Oct 8 2013, 08:19
- - Сергей Борщ   Ничего не понял. Что ожидали, что получили, какие ...   Oct 8 2013, 08:27
- - ViKo   У оператора присваивания ( = ) приоритет ниже, чем...   Oct 8 2013, 09:06
- - DASM   Я думаю тут вопрос не в приоритете, а в том, что С...   Oct 8 2013, 09:38
|- - Сергей Борщ   QUOTE (DASM @ Oct 8 2013, 12:38) Я думаю ...   Oct 8 2013, 10:03
- - DASM   не нашел ссылки про разность приоритетов   Oct 8 2013, 10:37
|- - demiurg_spb   Цитата(DASM @ Oct 8 2013, 14:37) не нашел...   Oct 8 2013, 10:48
||- - GetSmart   Двоеточие в этом выражении имхо должен иметь приор...   Oct 8 2013, 20:23
|- - Сергей Борщ   QUOTE (DASM @ Oct 8 2013, 13:37) не нашел...   Oct 8 2013, 10:52
|- - AHTOXA   Хм. А как же обратная совместимость?   Oct 8 2013, 10:58
- - Genadi Zawidowski   Может, немного прояснит один из тестовых файлов дл...   Oct 8 2013, 21:03
|- - demiurg_spb   Цитата(Genadi Zawidowski @ Oct 9 2013, 01...   Oct 9 2013, 06:34
- - Genadi Zawidowski   Ну сейчас тесты действительно другие были бы. Это ...   Oct 9 2013, 20:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016