This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Unnecessary warning
- To: llewelly at 198 dot dsl dot xmission dot com
- Subject: Re: Unnecessary warning
- From: Kip Macy <kip at lyris dot com>
- Date: Mon, 3 Jan 2000 11:46:28 -0800 (PST)
- cc: Martin dot Niklasson at nokia dot com, gcc-bugs at gcc dot gnu dot org
Sorry for my ignorance. However, the warning should probably mention
something to that effect.
-Kip
On Mon, 3 Jan 2000 llewelly@198.dsl.xmission.com wrote:
>
>
> On Mon, 3 Jan 2000, Kip Macy wrote:
>
> > It depends on how you define the desired behaviour of a warning. My
> > desired behaviour is to inform me of things in the code that need to be
> > fixed, and once fixed the message will go away. However, this example is
> > not something one can change without breaking the code - thus, by my
> > definition, it is a bug.
> >
> > -Kip
>
> Try this:
> #include<iostream>
> using std::cout;
> int main()
> {
> unsigned int foo;
> foo = 4294967295U; //Use a 'u' or 'U" to indicate an unsigned constant.
> cout << foo << endl;
> return(0);
> }
>
> No warnings. The 'U' (or 'u') is the standard way to mark a constant as
> unsigned. An integer literal without such a suffix is of type 'int'.
> More complicated uses of integer literals whose values are outside the
> range of int can give unexpected results.
>
> by the way:
>
> 'l' or 'L' == long int
> 'ul','UL','lu',etc == unsigned long int
> 'LL' == long long (this is a gcc extension)
>
> >
> > On Mon, 3 Jan 2000 Martin.Niklasson@nokia.com wrote:
> >
> > > Dear Sirs
> > >
> > > I am not sure whether you consider this a bug or a
> > > feature, but it annoys me a little. If you enter the
> > > following C++ lines in a program:
> > >
> > > unsigned int foo;
> > > foo = 4294967295; //Or any constant larger than 2^31
> > > cout << foo << endl;
> > >
> > > then g++ warns about the constant being
> > > "so large that it is unsigned".
> > >
> [snip]
>
>
>