我在做一道OJ题目的时候吗, 同样的题目如果用这段代码段
if(cnt%5 == 0)
printf("\n");
else if(i == high)
printf("\n");
要比用这段代码段
if(cnt%5 == 0 || i == high )
printf("\n");
要快,根据OJ上的数字,前者比后者快了一倍,当然整两个都是正确的,这是偶然吗?
我在做一道OJ题目的时候吗, 同样的题目如果用这段代码段
if(cnt%5 == 0)
printf("\n");
else if(i == high)
printf("\n");
要比用这段代码段
if(cnt%5 == 0 || i == high )
printf("\n");
要快,根据OJ上的数字,前者比后者快了一倍,当然整两个都是正确的,这是偶然吗?
在第二段代码中,首先会判断条件cnt%5==0是否成立,由于或机制的条件屏蔽,当其成立时第二个条件不执行,直接printf;
而cnt%5==0不成立时,还会进行判断第二个条件是否成立,当然还要执行或操作。
在第一段代码中两个条件判断是相同的,唯独没有或操作。
所以猜测第一段代码比第二段代码快,是由于没有或操作导致的。