e?v:v

Brandon Allbery allbery at ncoast.UUCP
Thu Jul 31 10:06:31 AEST 1986


Expires:

Quoted from <3183 at utcsri.UUCP> ["Re: C Compiler bug (and fix for a different one)"], by greg at utcsri.UUCP (Gregory Smith)...
+---------------
| >> void f3(which)
| >> {
| >>     extern void f1(),f2();
| >>     which?f1():f2();
| >> }
| >> cc(1) gives an "incompatible types" error.
| >
| >As it should.  The only thing you're allowed to do with void values
| >is throw them away.
| 
| But it is being thrown away. In e1?e2:e3, the contexts of e2 and e3 are
| inherited from the context of the ?: operator itself. In this case,
| that is in a 'for effect' or void context, so f1() and f2() should be
| treated as 'thrown away' too.
+---------------

If the result of ?: were an lvalue, this might be true; but it's not.  In
effect ?: evaluates its arguments and therefore teh arguments must have
values.

++Brandon
-- 
  ---------------- /--/	Brandon S. Allbery		UUCP: decvax!cwruecmp!
 /              / /|\/	Tridelta Industries, Inc.        ncoast!tdi2!brandon
----    -------- /-++	7350 Corporate Blvd.		PHONE: +1 216 974 9210
   /   / /---,  ----	Mentor, Ohio 44060		SYSOP: UNaXcess/ncoast
  /   / /    / /  /	     -- HOME --			 (216) 781-6201 24 hrs.
 /   / /    / /  /	6615 Center St. Apt. A1-105	ARPA:  ncoast!allbery%
----  -----~ ----	Mentor, Ohio 44060-4101		 case.CSNET at csnet-relay



More information about the Comp.lang.c mailing list