ы++

Mar 04, 2011 13:11

Most C++ programmers are familiar with the ternary operator:

x = (y < 0) ? 10 : 20;However, they don't realize that it can be used as an lvalue:

(a == 0 ? a : b) = 1;which is shorthand for

if (a == 0)
    a = 1;
else
    b = 1;
Use with caution :-)

links, stackoverflow, cpp

Leave a comment

Comments 2

ens_a_se March 5 2011, 13:57:00 UTC
Потому что тернарный оператор не улучшает читаемость кода. Исключая очень простые выражения. У меня тут на работе фанаты есть которые по 2-3 вложенных пишут.

Reply

h_323 March 8 2011, 13:50:37 UTC
в принципе, согласен.. правда, lvalue-выражения обычно не слишком развесистые.. а еще бывает удобно использовать вложенные тернарные операторы в конструкторе в списке инициализации конструктора, т.к. там цепочки if-ов не прокатят

Reply


Leave a comment

Up