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