expr1 ? expr2 : expr3 Effect: if expr1 is true (i.e.: non-zero) return: expr2 else return: expr3
max = (a > b) ? a : b ; min = (a < b) ? a : b ;
#define max(a,b) ( ((a) > (b)) ? (a) : (b) ) #define min(a,b) ( ((a) < (b)) ? (a) : (b) )
( Every possible sub-expression is put between brackets to avoid errors caused by operator priorities)