在不知道处理器字长的情况下,如何变量所有bit 设置 位 1 的状态
different_type_int val = 0xffffffff ? 对么 ? 要是 这个处理器的是16位的怎么办呢? 难道移植的时候要修改成 0xffff ?
用 C ++语言实现
#include <iostream>
using namespace std;
#define a
int main(void)
{
unsigned int comzero = ~0; // set all comzero's bit 1
unsigned int zero = 0;
cout << hex << comzero <<endl;
cout << hex << zero <<endl;
return 0;
}
结果是:
ffffffff
0
关键点:
在不知道CPU字长的情况下将变量所有位置位(也就是全部为 1 )采用 ~0 的方式是可移植的操作,因为相应编译器知道 把 ~0 转化成 多少位的 1 。