GCC 3.1.1

Andreas Jaeger aj@suse.de
Fri Jun 28 05:50:00 GMT 2002


"Rob Taylor" <robt@flyingpig.com> writes:

> Andreas Schwab <schwab@suse.de> writes:
>> Jack Lloyd <lloyd@acm.jhu.edu> writes:
>>
>> |> Basically:
>> |>
>> |> unsigned long long x;
>> |> x = 1 << 32;
>> |>
>> |> results in x == 0 rather than 0x100000000 as the code expects.
>>
>> Actually this is already undefined by itself, and even x == 0 is not
>> guaranteed.
>
> why? x is an unsigned long long, surely << should be defined for values up to 63
> for this implementation?

But 1 is an int.  And the expression 1 << 32 is evaluated as int.  Try
1LL to get a long long constant...

Andreas
-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj



More information about the Gcc mailing list