找工作过程中遇到的一道笔试题,两种解法:

1.操作系统是16位还是32位是跟它的地址寻址方式相关的(需要CPU支持,但与CPU字长没有必然联系),因此可以直接通过指针(地址)的长度来判断:

cout << (sizeof(int *)==4 ? "32 bit" : "16 bit") << endl;

2.如果不允许用sizeof,则通过整数的表示范围来判断,16位系统中整数最大为65535:

unsigned int a = ~0;
cout << (a>65535 ? "32 bit" : "16 bit") << endl;