我想给一个int8_t变量分配一个特殊值(所有位集(。然而,我得到了CCD_ 1。
int8_t值=0b11111111;
那么我应该如何设置所有位的设置值呢?我应该移到uint8_t吗?
您可以简单地分配-1或使用~0
并接受int
:的隐式强制转换
int8_t value = -1 ;
或
int8_t value = ~0 ;
同样,你可以明确表示:
int8_t value = static_cast<int8_t>(-1) ;
或
int8_t value = static_cast<int8_t>(~0) ;
如果您正在应用静态分析工具,这可能是必需的。
当然,您可以将强制转换应用于二进制初始化程序,但上述方法的优点是,它适用于任何整数类型,而无需对初始化程序中的位进行计数。