2014-12-07 52 views
-6

标题是有点误导,但我不知道还有什么称呼它。我有一个由2个值组成的数组: int array [2];确定是否INT不为0,没有if语句

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

我试图将自身的第一个值,但除以零可能会出现错误,我也没有其他办法,以我的问题。

我的目标的格式是这样的:

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; 
+0

你为什么对此感兴趣?只是为了它的乐趣,或为了特定的目的? – 2014-12-07 10:18:06

+0

您可以随时捕捉到了异常...... – 2014-12-07 10:18:24

+0

它是为特定目的。 – Hayden 2014-12-07 10:19:21

回答

1

这个假设32位廉政局的

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

谢谢,正是我在找的。 – Hayden 2014-12-07 10:46:48