c++ - Ternary Operator Not Generating Error -


i've been familiar ternary operator quite time now, , have worked in few differnet languages. understanding of operator this:

condition ? expr1 : expr2 however, in c++, following code legal:

int = 45; (i > 0) ? i-- : 1; 

aren't you, in effect, writing 1; or i - 1;how complete statement? understand intention of code decrement i if it's greater 0, would've thought code generate compiler error being expression, not full statement. expected code this:

int = 45; = (i > 0) ? - 1 : i; 

this called expression statement. expression evaluated , value discarded.

even valid:

42; 

although nothing. side effects (like i--, assignment, etc) in expression have effects.


in fact, many statements use expression statements: assignments, function calls, etc:

a = 42; foo(); 

Comments