Показать сообщение отдельно

  #3999  
Старый 17.10.2009, 20:49
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
С нами: 9806336

Репутация: 86
По умолчанию

Цитата:
Сообщение от Глюконатор  
Код:
cout << cpnum == 0 ? "Orig." : cpnum;
Почему так происходит?
Ну во-первых у оператора "<<" приоритет больше, чем у "?:",
поэтому сначала выведется cpnum, а потом то, что вернет cout будет сравниваться с 0... вобщем надо заключать в скобки весь тернарный оператор.

А во-вторых подстановка шаблонов происходит во время компиляции, и тут подставляется "Orig", т.е. char а потом в него выводится int-вое значение. Потому и ругается.

В твоем случае лучше написать так:
Код:
(cpnum == 0) ? cout << "orig" : cout << cpnum;
 
Ответить с цитированием