On Tue, 3 Apr 2001, Edward Felch wrote:
> I hate to ask a basic c question, but how does the ? in: GET_POS(ch)
> == POS_SITTING ? "sitting" : "resting"  work? Thanks a lot... ive been
> wondering
This is the ternary operator mentioned in another thread about code
maintainability.  It is a basic C question, and I would recommend you buy
a book on C (even a pocket reference that covers the syntax of the
language would be sufficient).
Having said that, the operator is not the question mark -- the operator is
the question mark and the colon.  The expression
  (a ? b : c)
should be read
  if (a) then (b) else (c)
It's a way of doing a simple conditional selection of a subexpression.
Naturally you can combine these:
  #define PDESC(perc) (perc >= 100 ? "perfect"           \
                      : perc >= 75 ? "very good"         \
                      : perc >= 60 ? "good"              \
                      : perc >= 40 ? "average"           \
                      : perc >= 25 ? "bad" : "awful")
Such conditional expressions can be found throughout the code.  Naturally,
they can be misused.  You should avoid any construct that affords you
terseness at the expense of your readability.
-dak
--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/05/01 PST