Not only that. With x?x:z, x is evaluated twice,
while with x?:z, x is only evaluated once. That's for stuff when you
want to, say [dumb example follows],
size_t my_read(..) {
return read(..) ? : -1
}
and the only other way would be to use a temporary,
size_t my_read(..) {
size_t x = read(..);
return x ? x : -1;
}
gcc should be smart enough to also do optimization in the second case..
Jan
--
-