Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;对于单个位,按位和 我只想知道一个关于按位和C++的简单问题。 我将其用于单个位(a&8、a&4、a&2、a&1等),我希望得到bool值作为返回值(如果位置上有1)_C++_Bit Manipulation - Fatal编程技术网

C++;对于单个位,按位和 我只想知道一个关于按位和C++的简单问题。 我将其用于单个位(a&8、a&4、a&2、a&1等),我希望得到bool值作为返回值(如果位置上有1)

C++;对于单个位,按位和 我只想知道一个关于按位和C++的简单问题。 我将其用于单个位(a&8、a&4、a&2、a&1等),我希望得到bool值作为返回值(如果位置上有1),c++,bit-manipulation,C++,Bit Manipulation,我可以将它除以一个数字(比如(a&8)/8),但在我的代码中它看起来并不好看(特别是,我使用的是数组和变量的长名称) 还有其他更好的编码方法吗 提前感谢。如果您想明确,请与0进行比较: const bool maskSet = (a & 8) != 0; 这是我所知道的最干净的方式。除法是非常奇怪的,因为这仍然使得从整数到布尔值的转换是隐式的。比较运算符使其显式。如果要显式,请与0进行比较: const bool maskSet = (a & 8) != 0; 这是我所知道的

我可以将它除以一个数字(比如(a&8)/8),但在我的代码中它看起来并不好看(特别是,我使用的是数组和变量的长名称)

还有其他更好的编码方法吗


提前感谢。

如果您想明确,请与0进行比较:

const bool maskSet = (a & 8) != 0;

这是我所知道的最干净的方式。除法是非常奇怪的,因为这仍然使得从整数到布尔值的转换是隐式的。比较运算符使其显式。

如果要显式,请与0进行比较:

const bool maskSet = (a & 8) != 0;

这是我所知道的最干净的方式。除法是非常奇怪的,因为这仍然使得从整数到布尔值的转换是隐式的。比较运算符使其显式。

最好的方法是将表达式转换为布尔值。这提高了可读性:

bool result;
result = 0 != (a & 8);
可能不需要与0进行比较,因为编译后的代码将在变量
b
中写入
true
false
。但这避免了以下警告:

warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

如果您不喜欢尤达的演讲,则顺序或比较参数可能会颠倒。这是一种有助于避免在C编程语言中意外赋值的样式。

最好的方法是将表达式转换为布尔值。这提高了可读性:

bool result;
result = 0 != (a & 8);
可能不需要与0进行比较,因为编译后的代码将在变量
b
中写入
true
false
。但这避免了以下警告:

warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

如果您不喜欢尤达的演讲,则顺序或比较参数可能会颠倒。这是一种有助于避免在C编程语言中意外赋值的样式。

boolbtrue=(a&8)应该足够好,甚至
boolbtrue=(a&8)!=0;。有什么问题?您所拥有的应该在正确的上下文中计算为
true
false
,而不进行分割或任何其他操作。
boolbtrue=(a&8)应该足够好,甚至
boolbtrue=(a&8)!=0;。有什么问题?您所拥有的应该在正确的上下文中计算为
true
false
,而无需分割或任何其他操作。感谢您的回答。:)@Samik注意到
bool result=a&8就可以了。就我个人而言,我觉得过于冗长的版本令人困惑。而从后到前的尤达风格更是如此:-)耶,我知道:)不过,我还是要用它们作为数组中的索引,就像
数组[(a&8)!=0]
。我希望这是最好的解决方案。谢谢大家的回答。:)@Samik注意到
bool result=a&8就可以了。就我个人而言,我觉得过于冗长的版本令人困惑。而从后到前的尤达风格更是如此:-)耶,我知道:)不过,我还是要用它们作为数组中的索引,就像
数组[(a&8)!=0]
。我希望这是最好的解决办法。