This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Bamboozled by long long
- From: John Love-Jensen <eljay at adobe dot com>
- To: <arijitg at uci dot edu>, <gcc-help at gcc dot gnu dot org>
- Date: Fri, 19 Jul 2002 14:14:37 -0500
- Subject: Re: Bamboozled by long long
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