e1?(void_e2):(void_e3)
Davidsen
davidsen at steinmetz.UUCP
Sat Aug 16 02:12:07 AEST 1986
In article <1701 at mmintl.UUCP> franka at mmintl.UUCP (Frank Adams) writes:
>The other paradigm is that e1?e2:e3 is precisely one of e2 or e3, depending
>on the value of e1. This is a very reasonable interpretation; but if it
>were correct, there would be one other important consequence which is not in
>fact legal. This is that when e2 and e3 are lvalues, the compound
>expression should also be an lvalue. In particular, one could write
>
>e1?e2:e3 = e4;
>
>which would mean the same thing as
>
>if (e1) then e2 = e4; else e3 = e4;
>
This kicked off an interesting thought:
*(e1 ? <ptr expr> : <ptr expr>) = expr;
Lo and behold it does what the quoted expression indicates. In an
actual example:
*(a < b : &b : &a) = 70;
I'm not sure it *good* for anything, but if I do it with macros using
cute names, I can enter it in the obfuscated C contest...
--
-bill davidsen
ihnp4!seismo!rochester!steinmetz!--\
\
unirot ------------->---> crdos1!davidsen
chinet ------/
sixhub ---------------------/ (davidsen at ge-crd.ARPA)
"Stupidity, like virtue, is its own reward"
More information about the Comp.lang.c
mailing list