如何检查几个指针中的任何一个是否为空?

时间:2014-04-22 15:42:21

标签: c logic

我有几个指针/整数变量,我想检查它们中的任何一个是否为0.现在我在一个大的if语句中将每个都比较为0,一旦它达到0就会短路。我想知道是否有更聪明或更快的方法来实现这一点。

3 个答案:

答案 0 :(得分:1)

这并不重要。即使您将所有指针堆叠起来并循环遍历此数组,或者如果您还是所有值,您仍然必须依次执行此操作。如果您有类似if( a != 0 && b != 0 && .. && z != null)之类的内容,编译器会将其转换为所有其他情况下所需的指令。

您唯一可以使用数组保存的内容,例如:你可能会在某些时候循环,但我认为这不是你想要的。

答案 1 :(得分:0)

不,没有。想一想:要确保你的价值观中没有一个是零,你绝对要看每一个价值观。正如您所正确指出的那样,可能会发生短路,一个零值已被发现。我会推荐类似的东西:

int has_null = -1;
for(int i=0; i < null_list_len && has_null &= null_list[i]; ++i)
  ;

if(has_null)
  //do stuff

如果您对要测试的值有更多假设,则可以改善运行时间。例如,如果您知道null_list数组已排序,则只需检查第一个条目是否为零,因为非零条目将暗示所有其他值也大于零。 / p>

答案 2 :(得分:0)

好吧,您可以编写将vars设置为零的任何代码,以确保将常用布尔设置为&#39; true&#39;。

检查将是一个测试一个布尔值的问题,无论有多少变量。如果bool为真,那么你就可以进行顺序检查,就像现在一样。

这可能,也可能不是,可能,更快,更有效,整体,(或不)。