简体   繁体   English

在64位CPU上的C ++中的Mac OS X上,是否有64位的类型?

[英]On Mac OS X in C++ on a 64-bit CPU, is there a type that is 64 bits?

I can't use "long long"; 我不能用“长久”; what should I be using? 我该怎么用?

Assuming Snow Leopard (Mac OS X 10.6.2 - Intel), then 'long' is 64-bits with the default compiler. 假设Snow Leopard(Mac OS X 10.6.2 - Intel),那么'long'是默认编译器的64位。

Specify 'g++ -m64' and it will likely be 64-bits on earlier versions too. 指定'g ++ -m64',它在早期版本中也可能是64位。

 1 = sizeof(char)
 1 = sizeof(unsigned char)
 2 = sizeof(short)
 2 = sizeof(unsigned short)
 4 = sizeof(int)
 4 = sizeof(unsigned int)
 8 = sizeof(long)
 8 = sizeof(unsigned long)
 4 = sizeof(float)
 8 = sizeof(double)
16 = sizeof(long double)
 8 = sizeof(size_t)
 8 = sizeof(ptrdiff_t)
 8 = sizeof(time_t)
 8 = sizeof(void *)
 8 = sizeof(char *)
 8 = sizeof(short *)
 8 = sizeof(int *)
 8 = sizeof(long *)
 8 = sizeof(float *)
 8 = sizeof(double *)
 8 = sizeof(int (*)(void))
 8 = sizeof(double (*)(void))
 8 = sizeof(char *(*)(void))

Tested with: 经测试:

i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646) (dot 1)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling with GCC 4.7.1 on Mac OS X 10.7.5 with option -std=c99 , the output from the program is more extensive. 使用选项-std=c99在Mac OS X 10.7.5上使用GCC 4.7.1进行编译,程序的输出更加广泛。 Thanks to apalopohapa for pointing out the oversight that long long etc were missing from the original. 感谢apalopohapa指出了原来缺少long long等的疏忽。

 1 = sizeof(char)
 1 = sizeof(unsigned char)
 2 = sizeof(short)
 2 = sizeof(unsigned short)
 4 = sizeof(int)
 4 = sizeof(unsigned int)
 8 = sizeof(long)
 8 = sizeof(unsigned long)
 4 = sizeof(float)
 8 = sizeof(double)
16 = sizeof(long double)
 8 = sizeof(size_t)
 8 = sizeof(ptrdiff_t)
 8 = sizeof(time_t)
 8 = sizeof(long long)
 8 = sizeof(unsigned long long)
 8 = sizeof(uintmax_t)
 1 = sizeof(int8_t)
 2 = sizeof(int16_t)
 4 = sizeof(int32_t)
 8 = sizeof(int64_t)
 1 = sizeof(int_least8_t)
 2 = sizeof(int_least16_t)
 4 = sizeof(int_least32_t)
 8 = sizeof(int_least64_t)
 1 = sizeof(int_fast8_t)
 2 = sizeof(int_fast16_t)
 4 = sizeof(int_fast32_t)
 8 = sizeof(int_fast64_t)
 8 = sizeof(uintptr_t)
 8 = sizeof(void *)
 8 = sizeof(char *)
 8 = sizeof(short *)
 8 = sizeof(int *)
 8 = sizeof(long *)
 8 = sizeof(float *)
 8 = sizeof(double *)
 8 = sizeof(int (*)(void))
 8 = sizeof(double (*)(void))
 8 = sizeof(char *(*)(void))
 1 = sizeof(struct { char a; })
 2 = sizeof(struct { short a; })
 4 = sizeof(struct { int a; })
 8 = sizeof(struct { long a; })
 4 = sizeof(struct { float a; })
 8 = sizeof(struct { double a; })
16 = sizeof(struct { char a; double b; })
16 = sizeof(struct { short a; double b; })
16 = sizeof(struct { long a; double b; })
 4 = sizeof(struct { char a; char b; short c; })
16 = sizeof(struct { char a; char b; long c; })
 4 = sizeof(struct { short a; short b; })
 6 = sizeof(struct { char a[3]; char b[3]; })
 8 = sizeof(struct { char a[3]; char b[3]; short c; })
16 = sizeof(struct { long double a; })
32 = sizeof(struct { char a; long double b; })
16 = sizeof(struct { char a; long long b; })
16 = sizeof(struct { char a; uintmax_t b; })

Include <stdint.h> or <inttypes.h> (the later is found on some more compilers, but both are provided by the Apple compiler), and use uint64_t and int64_t . 包括<stdint.h><inttypes.h> (后者可在更多编译器中找到,但两者均由Apple编译器提供),并使用uint64_tint64_t They are 64-bit on both 32-bit and 64-bit targets. 它们在32位和64位目标上均为64位。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM