我试图在C语言中使用64位整数,但对于是否可能,我得到了混合信号.
当我执行printf时:
printf("Size of long int:%d\nSize of long long int:%d\n\n",(int)sizeof(long int), (int)sizeof(long long int));
我得到的回应是:
长整型的大小:4 LONG LONG INT的大小:8
这让我觉得长整型有8字节=64位.
但是,当我try 声明以下变量时:
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位整数,我将不胜感激.谢谢...