如何用C++代码检测你用的编程环境是64系统还是32位系统?
在C++中32位和64位编码还是有区别的,比如你要输出或使用一个指针时要转化成4字节呢还是8字节呢?
aClass* p = new aClass();
cout << (unsigned int)p << endl; // 32 位系统
cout << (unsigned long)p << endl; // 64 位系统
首先得明白32位系统和64位系统的区别。
32位和64位系统的主要差别在于CPU一次处理数据的能力是32位还是64位。所以从这里来看64位系统的执行效率是比32位更高的。而对于C++程序员来说它对我们的影响除了X86和X64架构平台影响之外,还有存储时地址的影响。32位的寻址范围是2^32 = 4G,也就是说32位系统最高支持4G内存,而64位系统的寻址范围是2^64 = 4G*4G,它所支持的内存对于现在我技术来时是个天文数字。
方法一:
用指针的方式,因为32位系统的寻址空间只有32位大小,所以32位系统的指针所指向的地址应该是32位,如果用sizeof求任意类型的的指针的大小的话应该得到4字节。同里如果是64位系统的话则是8字节。
cout << "sizeof(int*):" << sizeof(int*) << endl;
// 32 位系统则是4字节, 64位系统则是8字节