Article View: comp.std.c
Article #3534Re: Integral promotion.
From: Ari Lukumies
Date: Thu, 15 Feb 1996 15:42
Date: Thu, 15 Feb 1996 15:42
52 lines
2122 bytes
2122 bytes
Rune Huseby wrote:
:
: I got a problem understanding the rules on integral promotion in
: the C language:
:
: Consider the following function:
:
: short test(short x1, short x2);
:
: int main(void)
: {
: short result;
: result = test(1, 2);
The numbers 1 and 2 here are by convention considered by compiler to be ints (not
shorts).
: return 0;
: }
:
: short test(short x1, short x2)
: {
: short result;
: result = x1 + x2; /* Warning: '=' : conversion from 'int '
: to 'short ', possible loss of data */
: return result;
: }
:
: My compiler (Microsoft Visual C++ 4.0), automagically converts
: my short-parameters to int's, even though all variables involved
: are short. I know that the standard says that all arguments can
: be converted to the biggest 'type' of all the arguments, but is
: it correct that char's and short's always are promoted to int's,
: without regard to the other arguments in the expression?
Chars are converted to ints, because passing a byte (where char equals one byte in
size) is both inefficient and leads to difficulties in the receiving party (for
instance, to pass two chars would then pack them into one byte, which the receiver
would have to be able to handle).
:
: The reason I ask is that I am writing code that should be
: portable from a 16-bits environment (where short and int are the
: same size) to a 32-bits environment. (My 16-bits compiler does
: not complain about the code).
That's because in 16-bits, sizeof(int) == sizeof(short) in PC world.
Later,
AriL
--
All my opinions are mine and mine alone.
Technical Details
Message-ID:
<4fvk8c$eq8@solutions.solon.com>Path:
arc1-ca.pugleaf.net!solon.com!not-for-mailReferences:
<4fstj7$2l6@solutions.solon.com>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!solon.com!not-for-mail From: Ari Lukumies <aril@cmt.lpr.mail.carel.fi> Newsgroups: comp.std.c,comp.lang.c.moderated Subject: Re: Integral promotion. Date: 15 Feb 1996 09:42:04 -0600 Organization: Carelcomp Forest Sender: clc@solutions.solon.com Approved: clc@solutions.solon.com Message-ID: <4fvk8c$eq8@solutions.solon.com> References: <4fstj7$2l6@solutions.solon.com> NNTP-Posting-Host: solutions.solon.com X-Mailer: Mozilla 2.0b6a (WinNT; I)