GCC 4.4.1에서 Code::Blocks을 사용하고 있으며 C 코드에서 64 비트 부호있는 정수를 인쇄 할 수없는 것 같습니다.GCC 4.4.1에서 64 비트 정수를 인쇄하는 방법은 무엇입니까?
이 코드 :
longint -= 0x1000000000000000;
printf("%x%x\n", *(((int*)(&longint))+1), longint);
가 제공합니다 :
bcdefabcdefcdef
,536,913,632
Sizeof: 64-bit
cdefcdef
1bcdefabcdefcdef
-839922193
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 */
는 출력을 생성합니다 10
나는 뭔가를 놓친가?
가능한 중복 http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long- long-int). – npclaudiu
두 번째 printf가 어떻게 잘못됩니까? 아, 지금 예에서 보았습니다. 신경 쓰지 마. 이 예제는 리눅스에서 나에게 맞는 값을 출력한다. –
@npclaudiu - 고마워요. 나는 거기에서 그것을 얻었다! – Fenikso