🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #3517

Re: Integral promotion.

#3517
From: Jens M Andreasen
Date: Wed, 21 Feb 1996 23:55
33 lines
1550 bytes

On 21 Feb 1996, S. Lee wrote:

> >> The addition operator "+" converts your short operands to ints.
> >
> >No, just using their values does that ...

> Okay, I'm confused.  Let just say the above is true.  Then the expression
> "x1 + x2" has type int because x1 and x2 were converted to int before
> being passed to the + operator.

I admit that I am confused too. So in this case the compiler should issue a 
warning for { short x = 0; x++; } since "x++" equals "x = x + 1" and both 
"x" and "1" are promoted to integers, and there could therefore be a 
potential loss of precision because "sizeof(int) > sizeof(short)", but no 
precision could have been lost if int and short had been the same (small) 
size ?? <phew>

This again implies that the ++ operator should be avoided on short 
since it is destined to cause havoc and confusion ... Which in turn is 
not the way C is written ... (Ehrm  :)

[testing] _I can't even cast my way out of this!?_ 
  
problem_with(short i){
  assert(sizeof (int) > sizeof (short));
  return i++;    /* Warning: Precision may be lost */
}

I never saw this in any textbook :-) 
 
// Jens M Andreasen
Technical Details
Message-ID: <4ggbcq$81c@solutions.solon.com>
Path: arc1-ca.pugleaf.net!solon.com!not-for-mail

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!solon.com!not-for-mail
From: Jens M Andreasen <jens-and@dsv.su.se>
Newsgroups: comp.std.c,comp.lang.c.moderated
Subject: Re: Integral promotion.
Date: 21 Feb 1996 17:55:06 -0600
Organization: Digital Solutions
Sender: clc@solutions.solon.com
Approved: clc@solutions.solon.com
Message-ID: <4ggbcq$81c@solutions.solon.com>
NNTP-Posting-Host: solutions.solon.com