不用sizeof判断16位32位 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数?(不用sizeof()函数求当前主机上的一个int占用几个字节)

方法一:

16位的系统下,

int i = 65536;

cout << i; // 输出0;//装不下,最高位溢出,剩下16位的当然是0;

int i = 65535;

cout << i; // 输出-1;//-1的补码是65535

而32位的系统下:

int i = 65536;

cout << i; // 输出65536;

int i = 65535;

cout << i; // 输出65535;

2.

#include <iostream>

 

using namespace std;

 

#define my_sizeof(L_Value)  (char* )(&L_Value + 1) - (char* )&L_Value

 

int main()

 

{

    int i;

    double f;

    double a[4];

    double* q;

    cout<<my_sizeof(i)<<endl;//4

    cout<<my_sizeof(f)<<endl;//8

    cout<<my_sizeof(a)<<endl;//32

    cout<<my_sizeof(q)<<endl;//4

    cout<<my_sizeof("aadf")<<endl;//5

    system("pause");

    return 0;

}


(char* )&L_Value返回L_Value的地址的第一个字节,(char* )(&L_Value+1)返回L_Value的地址的下一个地址的第一个字节,所以他们之差为它所占字节数。

方法一:

16位的系统下,

int i = 65536;

cout << i; // 输出0;//装不下,最高位溢出,剩下16位的当然是0;

int i = 65535;

cout << i; // 输出-1;//-1的补码是65535

而32位的系统下:

int i = 65536;

cout << i; // 输出65536;

int i = 65535;

cout << i; // 输出65535;

猜你喜欢

转载自1527zhaobin.iteye.com/blog/1628355
今日推荐