Как указать 64-битные целые числа в c

Я пытаюсь использовать 64-битные целые числа в C, но я получаю смешанные сигналы относительно того, должно ли это быть возможным.

Когда я выполняю printf:

printf("Size of long int:%d\nSize of long long int:%d\n\n",(int)sizeof(long int), (int)sizeof(long long int));

Я получаю ответ:

Size of long int:4 Размер long long int:8

Мне кажется, что long long int имеет 8 байтов = 64 бита.

Однако, когда я пытаюсь объявить следующие переменные:

long long int a2 = 0x00004444;
long long int b2 = 0x000044440;
long long int c2 = 0x0000444400;
long long int d2 = 0x00004444000;
long long int e2 = 0x000044440000;
long long int f2 = 0x0000444400004;
long long int g2 = 0x00004444000044;
long long int h2 = 0x000044440000444;
long long int i2 = 0x0000444400004444;

Последние 4 переменные (f2,g2,h2,i2) выдают сообщение об ошибке:

предупреждение: целочисленная константа слишком велика для 'long' введите

Я получаю тот же результат, когда заменяю «long long int» на «int64_t». Я предполагаю, что «int64_t» был распознан, поскольку он не генерировал никаких собственных сообщений об ошибках.

Итак, кажется, что мой 8-байтовый длинный int на самом деле 6-байтовый длинный int, и я не понимаю, что я здесь упускаю. Если это чем-то поможет, вот информация о моем компиляторе gcc:

me@ubuntu:~$ gcc -v  
Using built-in specs.  
Target: i686-linux-gnu  
Configured with: ../src/configure -v   
--with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5'  
--with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs   
--enable-languages=c,c++,fortran,objc,obj-c++  
--prefix=/usr   
--program-suffix=-4.4   
--enable-shared   
--enable-multiarch   
--enable-linker-build-id   
--with-system-zlib   
--libexecdir=/usr/lib   
--without-included-gettext   
--enable-threads=posix   
--with-gxx-include-dir=/usr/include/c++/4.4   
--libdir=/usr/lib   
--enable-nls   
--with-sysroot=/ -  
-enable-clocale=gnu   
--enable-libstdcxx-debug   
--enable-objc-gc   
--enable-targets=all 
--disable-werror   
--with-arch-32=i686   
--with-tune=generic   
--enable-checking=release   
--build=i686-linux-gnu   
--host=i686-linux-gnu   
--target=i686-linux-gnu  
Thread model: posix  
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)   

Если кто-нибудь знает, как (или доступны ли) 64-битные целые числа, я был бы очень признателен за любую помощь. Спасибо....

51
задан smwikipedia 27 June 2017 в 16:27
поделиться