This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Bamboozled by long long
- From: Leo Przybylski <leop at engr dot arizona dot edu>
- To: John Love-Jensen <eljay at adobe dot com>
- Cc: arijitg at uci dot edu, gcc-help at gcc dot gnu dot org
- Date: 19 Jul 2002 14:22:30 -0700
- Subject: Re: Bamboozled by long long
- References: <B95DCF4D.320A%eljay@adobe.com>
Doesn't make the code very portable does it?
-Leo
On Fri, 2002-07-19 at 12:14, John Love-Jensen wrote:
> Your data types are not matching your formats, a %lX expects a long, not a
> long long.
>
> Do this:
>
> unsigned long long k=1;
> unsigned int i = 4;
> printf("The values are i: %d, , k: %lX, i+k: %lX \n", i, (long)k,
> (long)(i+k));
> k = k + i;
> printf("The values are i: %d, , k: %lX, i+k: %lX \n", i, (long)k,
> (long)(i+k));
>
> That'll fix the problem. If you have an appropriately modified/enhanced
> "standard" C library, you may be able to do this...
>
> unsigned long long k=1;
> unsigned int i = 4;
> printf("The values are i: %d, , k: %llX, i+k: %llX \n", i,k , i+k);
> k = k + i;
> printf("The values are i: %d, , k: %llX, i+k: %llX \n", i,k , i+k);
>
> ...or this...
>
> unsigned long long k=1;
> unsigned int i = 4;
> printf("The values are i: %d, , k: %LX, i+k: %LX \n", i,k , i+k);
> k = k + i;
> printf("The values are i: %d, , k: %LX, i+k: %LX \n", i,k , i+k);
>
> ...depending on the extension (or convention for long long) used.
>
> --Eljay
>