确定int是否为0且没有if语句

时间:2014-12-07 10:15:54

标签: c++ arrays bit-manipulation

标题有点误导,但我不知道还有什么可以称之为。我有一个由2个值组成的数组: int array [2];

其中一个值将包含0而另一个值将不包含0.如果不使用if语句,最好不使用布尔表达式,我想确定array[0];是否包含0 。如果它不包含0,则应返回1,否则应返回0.

我已尝试将第一个值单独划分,但可能会出现Division By Zero错误,而我没有其他替代方法来解决我的问题。

我的目标格式是这样的:

array[check if zero index is 0];

编辑:例如:

array[0] = 20; 
array[1] = 0;
array[check if zero index is 0]; // index is 1

array[0] = 0; 
array[1] = 73;
array[check if zero index is 0]; // index is 0;

1 个答案:

答案 0 :(得分:1)

这假设是32位int的

((static_cast<unsigned>(-(array[0]*array[0]))&(1ul<<31))>>31)