This is impossible in C. The ternary operator as you've given it
evaluates either y or z depending on the value of x. A C function
call always evaluates all of its arguments. For example.
int w, x = 1, y = 1, z = 1;
w = x ? ++y : ++z;
printf ("%d %d %d\n", y, z);
will print 1 2 1. If you subsitute,
w = cond(x, ++y, ++z);
for the ternary operator, you'll get 1 2 2.
This may sound like a small thing, but conditional/lazy evaluation is
what leads to the power of Turing completeness in a language.
On Jul 21, 1:29 pm, BALARUKESH <[email protected]> wrote:
> Ternary operator- x? y : z
> Implement it in a function: int cond(int x, int y, int z); using only
> ~, !, ^, &, +, |, <<, >> no if statements, or loops or anything else,
> just those operators, and the function should correctly return y or z
> based on the value of x. You may use constants, but only 8 bit
> constants. You can cast all you want. You're not supposed to use extra
> variables, but in the end, it won't really matter, using vars just
> makes things cleaner.
--
You received this message because you are subscribed to the Google Groups
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.