LINUX.ORG.RU

"?" в C/C++


0

0

несколько раз встречал код
вида
(A) ? : B
или
(A) ? B : ;

т.е. пропускается значение по одну из сторон ":",
1)что возвравращается в этом случае?
2)это расширение gcc или входит в стандарт?

anonymous

судя по всему там где пусто - это null expression. нифига не понятно какой там у него тип и все такое.

> (A) ? : B
компилируется, дает A, если (bool)A == true, иначе B

причем если я правильно трактую описание грамматики в стандарте это не должно компилиться.

> (A) ? B : ;
не компилируется gcc 3.3.3, icc 9.0, нужно expression.

попробую сегодня проконсультироваться к мембера UK C++ panel

AnToXa
()

info gcc - C extensions : Conditionals

the expression x? : y ... is perfectly equivalent to x? x: y

vnp
()

Info GCC -> C Extensions -> LValues. RTFM, короче говоря.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.