如何指定在C 64位整数 [英] How to specify 64 bit integers in c
问题描述
我试图使用64位整数的C,但我得到的混合信号,它是否是可能的。
I'm trying to use 64 bit integers in C, but am getting mixed signals as to whether it should be possible.
在我执行的printf:
When I execute the printf:
printf("Size of long int:%d\nSize of long long int:%d\n\n",(int)sizeof(long int)(int)sizeof(long long int));
我得到的回应是:
The response I get is:
尺寸:4 长长整型尺寸:8
Size of long int:4 Size of long long int:8
这让我觉得很长的长整型有8个字节= 64位。
This makes me feel that a long long int has 8 bytes = 64 bits.
然而,当我试图声明以下变量:
However, when I try to declare the following variables:
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)给我的错误信息:
The last 4 variables (f2,g2,h2,i2) give me the error message:
警告:整型常量太大长类型
warning: integer constant is too large for ‘long’ type
我得到的时候我替换得到long long int'与'的int64_t'相同的结果。我想'的int64_t'被认可,因为它没有产生任何自己的错误消息。
I get the same result when I replace 'long long int' with 'int64_t'. I assume 'int64_t' was recognized, since it didn't generate any error messages of its own.
所以,看来我的8字节长的长整型真的是一个6字节长的长整型,我不明白我在这里缺少什么。如果它的任何帮助,这里是我的gcc编译器的信息:
So, it appears my 8 byte long long int is really a 6 byte long long int, and I don't understand what I'm missing here. If it's any help, here is the information on my gcc compiler:
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位整数如何接触到我,我真的AP preciate任何帮助。谢谢....
If anyone knows how (or if) 64 bit integers are accessible to me, I'd really appreciate any help. Thanks....
推荐答案
使用 stdint.h
整数数据类型的特定大小,也可以使用相应的后缀整数文字常数,例如:
Use stdint.h
for specific sizes of integer data types, and also use appropriate suffixes for integer literal constants, e.g.:
#include <stdint.h>
int64_t i2 = 0x0000444400004444LL;
这篇关于如何指定在C 64位整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!