#include <stdio.h>
int main() {
unsigned long long int num = 285212672; //FYI: fits in 29 bits
int normalInt = 5;
printf("My number is %d bytes wide and its value is %ul. A normal number is %d.\n", sizeof(num), num, normalInt);
return 0;
}
Выход:Как вы печатаете unsigned long long int (спецификатор формата для unsigned long long int)?
My number is 8 bytes wide and its value is 285212672l. A normal number is 0.
Я предполагаю, что этот неожиданный результат от печати unsigned long long int
. Как вы printf()
a unsigned long long int
?
См. Также http://stackoverflow.com/questions/5140871/sprintf-for-unsigned-int64 – hippietrail 2011-04-03 09:51:50
Я бы предложил использовать с использованием stdint.h и быть явным количеством битов в вашей переменной. Мы все еще находимся в переходном периоде между 32 и 64-битными архитектурами, а «unsigned long long int» не означает одно и то же. – 2011-05-13 22:19:57
Я просто скомпилировал ваш код (с% llu) с помощью gcc, и результат был правильным. Вы передаете какие-либо параметры компилятору? – Juan 2008-08-07 23:13:28