Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Aug 1999 10:29:39 +0100
From:      Mark Ovens <mark@ukug.uk.freebsd.org>
To:        Ben Smithurst <ben@scientia.demon.co.uk>
Cc:        chat@freebsd.org
Subject:   Re: Correct casting in ANSI C
Message-ID:  <19990830102938.A265@marder-1>
In-Reply-To: <19990830011750.A37445@lithium.scientia.demon.co.uk>; from Ben Smithurst on Mon, Aug 30, 1999 at 01:17:51AM %2B0100
References:  <19990830001201.C265@marder-1> <19990830011750.A37445@lithium.scientia.demon.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 30, 1999 at 01:17:51AM +0100, Ben Smithurst wrote:
> Mark Ovens wrote:
> 
> > To achieve *strict* ANSI compliance, what is the correct way to
> > use cast(s) in the following code.
> >
> > gcc doesn't complain, even with ``-Wall'',
> 
> Or `-Wall -ansi -pedantic'.
> 

No

> > but Sun's ANSI C compiler
> > gives a warning like "the semantics of SCONV change in ANSI C; use
> > an explicit cast". Do I need to cast each int (& the literal 1000),
> > or just cast the whole expression?
> >
> >         int i = 123, j = 57, k = 500;
> >         double d;
> >
> >         d = i / j + k / 1000;
> 
> Hmm. I think you can just cast one part of each division, to make it do it
> in floating point, or something. How about
> 
> d = (double)i / j + (double)k / 1000;
> 
> or, somewhat cleaner,
> 
> d = (double)i / j + k / 1000.0;
> 

Both of these work of course but the second one is, as you say,
cleaner. It was just that there was a debate at work about the
correct way (someone said you had to cast *all* the ints) to be
*strict* ANSI.

> Otherwise it will just do an integer division (or so it appears -- I'm
> not an expert at this sort of thing). It seems you need to get some
> floating point into each division.
> 

That's what I think.

> You might like to go and ask this in comp.lang.c, where all the ANSI C
> experts hang out.
> 

I may do that.

> Incidentally, your mail came through with lines padded out to 80
> characters with trailing spaces, did you break something? I don't think
> it's my end, I haven't noticed it on anything else.
> 

Interesting. I made a typo in the address and it bounced so I just
copied and pasted the original into a new message. Mutt, it seems,
pads the displayed lines to the window width.

BTW Ben, I've used the 2 font progs you sent me, fontdump and
fontmake. Great job (I wanted to make an iso-8x8 thin font). Only
thing that took a while to figure out is that the .fnt files are
uuencoded.


> -- 
> Ben Smithurst            | PGP: 0x99392F7D
> ben@scientia.demon.co.uk |   key available from keyservers and
>                          |   ben+pgp@scientia.demon.co.uk
> 

-- 
STATE-OF-THE-ART: Any computer you can't afford.
OBSOLETE: Any computer you own.
________________________________________________________________
      FreeBSD - The Power To Serve http://www.freebsd.org
      My Webpage http://ukug.uk.freebsd.org/~mark/
mailto:mark@ukug.uk.freebsd.org              http://www.radan.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990830102938.A265>