Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 May 2002 12:11:57 -0700
From:      "David O'Brien" <obrien@FreeBSD.ORG>
To:        Bill Fenner <fenner@research.att.com>
Cc:        audit@FreeBSD.ORG, current@FreeBSD.ORG
Subject:   Re: moused(8): char signed-ness problem with gcc 3.1
Message-ID:  <20020516121157.F67791@dragon.nuxi.com>
In-Reply-To: <200205161906.MAA06850@windsor.research.att.com>; from fenner@research.att.com on Thu, May 16, 2002 at 12:06:49PM -0700
References:  <200205160346.UAA27116@windsor.research.att.com> <86k7q48h2w.wl@archon.local.idaemons.org> <20020516114247.A67791@dragon.nuxi.com> <200205161906.MAA06850@windsor.research.att.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 16, 2002 at 12:06:49PM -0700, Bill Fenner wrote:
> >Specifically what is the problem?  Given the program below, take the
> >ISO-C spec and explain the problem.  Or even w/o the spec -- I haven't
> >been reading this thread.
> 
> > > int
> > > main()
> > > {
> > >    unsigned char i = 127;
> > >    char j;
> > > 
> > >    printf("%d\n", ((char)(i << 1)));
> 
> This prints -2, which is correct -- (signed char)254 is -2.
> 
> > >    j = ((char)(i << 1)) / 2;
> > >    printf("%d\n", j);
> 
> This prints 127, which is incorrect.  -2 / 2 is -1.
> 
> > >    j = ((char)(i << 1));
> > >    printf("%d\n", j / 2);
> 
> This breaks down the previous expression into two halves, and
> results in the correct answer of -1.  However, there should
> be no difference between
> ((char)(i << 1)) / 2
> and
> char j = ((char)(i << 1); j / 2

Sounds like you should forward this to gcc-bugs@gcc.gnu.org. :-)
CC audit@ (and current@) so we can all see what the GNU people say.
Don't forget to show the output of `cc -v'.

Or run `gccbug' from a recient gcc31 port install.  If you do this
instead, please send me the PR #.

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




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