Как напечатать 64-битное целое число в GCC 4.4.1?

Я использую Code::Blocksс GCC 4.4.1 и, похоже, не могу напечатать 64-битные целые числа со знаком из моего C-кода.

Этот код:

long long longint;

longint = 0x1BCDEFABCDEFCDEF; /* 2003520930423229935 */
printf("Sizeof: %d-bit\n", sizeof(longint) * 8);     /* Correct */
printf("%llx\n", longint);                           /* Incorrect */
printf("%x%x\n", *(((int*)(&longint))+1), longint);  /* Correct */
printf("%lld\n", longint);                           /* Incorrect */ 

Выводит:

Sizeof: 64-bit
cdefcdef
1bcdefabcdefcdef
-839922193

64-битная арифметика вроде работает правильно:

longint -= 0x1000000000000000;
printf("%x%x\n", *(((int*)(&longint))+1), longint);

Выдает:

bcdefabcdefcdef

Я что-то пропустил?

13
задан Fenikso 19 April 2012 в 06:50
поделиться