Hacker News new | ask | show | jobs
by kazinator 2941 days ago
Lisp is unambiguous, whereas:

   x = a ? b : c;
Oops; that assigns x = a, and tests it. Not if that = is that of an initializer, though:

   int x = a ? : b : c;
so now we have an expression that changes meaning if we have to split the initialization off into an assignment.

You're often better off if you put it behind a macro:

  #define IF(X, Y, Z) ((X) ? (Y) : (Z))
In C coding, a lot of ternary action happens behind the curtain of preprocessing, where expression is almost fully parenthesized.
1 comments

C non-sequitor. Assignment is always lower in precedence than conditional expressions.

CPP macros is red herring.