🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #1716

Re: Type bug in conditional expressions?

#1716
From: Doug Gwyn
Date: Mon, 17 Sep 1990 17:18
19 lines
1619 bytes
In article <1606@lupine.NCD.COM> rfg@NCD.COM (Ron Guilmette) writes:
>>int a = sizeof (1 ? (char) 1 : (char) 1);	/* 1, wrong? */
>>int b = sizeof (1 ? (short) 1 : (short) 1);	/* 2, wrong? */
>>int c = sizeof (1 ? (char) 1 : (short) 1);	/* 4, right */
>>int d = sizeof (0 ? (char) 1 : (short) 1);	/* 4, right */
>Even after re-reading section 3.3.3.4 of the ANSI C standard, I can't
>figure out what the proper values should be in the cases shown above.

I don't see what the problem is.  The value "sizeof expression" is the
number of bytes (== chars) that would be assigned by the implementation
for a variable having the type of the expression.  The type of a
conditional expression is well-defined (3.3.15).  In the case that the
second and third operands have arithmetic type, as here, the type of
the conditional expression has the common type produced by the usual
arithmetic conversions (see 3.2.1.5 for those rules).  In these examples
the integral promotions involved in the usual arithmetic conversions
result in either an int or unsigned int, both of which have the same
size (== sizeof(int)).  Thus if sizeof(int)==4, all the sizeofs in this
example should produce a value of 4.
Technical Details
Message-ID: <13890@smoke.BRL.MIL>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!tut.cis.ohio-state.edu!purdue!haven!adm!smoke!gwyn
References: <1990Sep12.151529.7268@syd.dit.CSIRO.AU> <1606@lupine.NCD.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!tut.cis.ohio-state.edu!purdue!haven!adm!smoke!gwyn
From: gwyn@smoke.BRL.MIL (Doug Gwyn)
Newsgroups: comp.std.c
Subject: Re: Type bug in conditional expressions?
Message-ID: <13890@smoke.BRL.MIL>
Date: 17 Sep 90 17:18:49 GMT
References: <1990Sep12.151529.7268@syd.dit.CSIRO.AU> <1606@lupine.NCD.COM>
Organization: U.S. Army Ballistic Research Laboratory, APG, MD.
Lines: 19