Re[3]: Happy debugging!
От: alexqc Россия
Дата: 21.09.07 12:37
Оценка:
Здравствуйте, drx, Вы писали:

drx>Здравствуйте, Axc, Вы писали:


drx>>> T* const result = q == p ? p : q;

Axc>>Я чего-то не того. result = q?

drx>Нет.

drx>Это выражение компилится так, как будто бы оно выглядело следующим образом:
drx>
drx>T* const result = ((q == p) ? p : q);
drx>


drx>RTFM, вобщем. Боюсь, что придётся копаться в грамматике языка, т.к. AFAIR Страсутруп в своей книге не стал объяснять подобный случай, а сразу отослал к грамматике.


Хорошо, перепишем:


T* const result;
if(q==p) result=p;
else result=q;




drx>Ну или просто попробуй скомпилировать и запустить

drx>
drx>int i = 0 == 1 ? 2 : 3;
drx>std::cout << i;
drx>


Обманываете, батенька!
Если быть до конца честным, должно быть:

//считаем что p=2

//случай q=2
int i = 2 == 2 ? 2 : 2;
std::cout << i;

//случай q=3
int j = 3==2? 2 : 3;
std::cout << j;


В обоих случаях выведет "значение q" (2 когда q=p=2, 3 когда q=3).
И зачем огород городить?
Живи, Україно, прекрасна і сильна
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.