c++ - 在 64 位 CPU 上使用 C++ 的 Mac OS X 上,是否有 64 位的类型?

标签 c++ macos 64-bit

我不能用“long long”;我应该使用什么?

最佳答案

假设 Snow Leopard(Mac OS X 10.6.2 - Intel),那么 'long' 是默认编译器的 64 位。

指定“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))

测试:

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. Thanks to apalopohapa for pointing out the oversight that long long etc were missing from the original.

 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; })

关于c++ - 在 64 位 CPU 上使用 C++ 的 Mac OS X 上,是否有 64 位的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2383520/

相关文章:

c++ - 在结构列表的 vector 中打印结构成员

macos - SwiftUI:从 macOS TextField 中删除 'Focus Ring' 高亮边框

swift - 在 SwiftUI (Xcode 12) 中折叠侧边栏

x64计算机上的MSBuild.Community.Tasks.Attrib失败

c - Matlab 2013b 生成的代码在 mex 中生成 Undefined symbols for architecture x86_64 错误

c++ - 我可以以某种方式将套接字从winsock2.h传递到unique_ptr并为他制作自定义删除器吗?

c++ - 引用绑定(bind)到类型为 'value_type' 的空指针

.net - 32 位进程如何与 .NET 中的 64 位进程通信?

c++ - 应用程序窗口样式

ios - 当 SwiftUI 中其他变量更新时如何修改/重置 @State