我有几个指针/整数变量,我想检查它们中的任何一个是否为0.现在我在一个大的if语句中将每个都比较为0,一旦它达到0就会短路。我想知道是否有更聪明或更快的方法来实现这一点。
答案 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为真,那么你就可以进行顺序检查,就像现在一样。
这可能,也可能不是,可能,更快,更有效,整体,(或不)。