GCC 4.4.1 でCode::Blocksを使用していますが、C コードから 64 ビット符号付き整数を出力できないようです。
このコード:
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
何か不足していますか?