项目场景:
复习时对照参考答案发现和自己的程序不同,想了一下程序的执行效率
问题描述:
韩信点兵
参考答案:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int soldier = 1;
while(soldier)
{
soldier++;
if(soldier%3==2&&soldier%5==3&&soldier%7==2)
{
printf("soldiers:%d\n",soldier);
soldier = 0;
}
}
return 0;
}
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int soldier = 1;
while(1)
{
soldier++;
if(soldier%3==2&&soldier%5==3&&soldier%7==2)
{
printf("soldiers:%d\n",soldier);
break;
}
}
return 0;
}
不同点:
只有结束循环的时候的语句不同,参考修改了判断条件使循环结束,而我则使用了break。
比较择优:
从程序的运行效率来看: -1.先让soldier变量为零,再回到while重新判断,消耗了两个操作数。
2.break不是表达式,表达式由操作数和运算符组成 [PS 独立的操作数 也是一个表达式],break 没操作数 没运算符。
所以,如果是在较大的循环嵌套程序中,使用break无疑是最优选择,效率最高;当然,如果像soldier那样的变量在后续中需要继续使用,必须改变条件来结束循环,那就另当别论了。