VC案例教学之一:改造轮子1:用for代替……

VC案例教学之一:改造轮子一:用for方式代替所有的循环方式……


      作为一个(软件)工程师,你的前辈会经常告诉你说:别总是重新自己造轮子。但实际上作为新的工程师,不会造轮子,根本就不可能成为好的工程师。因为“造轮子”是基础啊。

    下面我们就和新工程师一起学习“改造轮子”:

 

//“改造轮子”,案例1:

//想象一下下面的程序要放在远程运行,比如永远不停机的服务器端,或者会放在卫星上发到外太空去……

 

#include "stdafx.h"

#include<iostream>

 

int main(int argc, char* argv[])

{

         for(inti=0;true;++i) {

                   if(0==i%100000000)std::cout<<i<<std::endl;

         }

         return 0;

}

 

原型是什么?想一想?对了……

//“改造轮子”,案例1的原型:

 

#include "stdafx.h"

#include<iostream>

 

int main(int argc, char* argv[])

{

         Int i=0;

         While(true) {

                   if(0==i%100000000)std::cout<<i<<std::endl;

                   ++i;

         }

         return0;

}

 

看到没有,用while 写(足足)多了两行(啊)!

而且要命的是 int i变量变成了非(模块内的局部的)变量--既 i 变成了 main函数的全局变量!……这搞不好和前后的同名变量混淆、冲突……那可太糟糕了。

有没感觉改造后的轮子更简单紧凑啊?

 

 

//“改造轮子”,案例2:

 

#include "stdafx.h"

#include<iostream>

using namespace std;

 

int main(int argc, char* argv[])

{

         //用for((((inti=0;true;++i) {循环

              for( int i=0;true;++i) {

                   if(0==i%100000000)std::cout<<i <<endl;

                   if(0>i){cout<<"此时i=" <<i<<",终于满足了退出条件(真不容易啊)!"<<endl;

                                               cout<<"(本次循环的)上一次i是什么呢?i-1="<<i-1<<endl;

                                     break;}

         }//for(inti=0

         return0;

}

 

 

//“改造轮子”,案例2的”while”原型:

 

#include "stdafx.h"

#include<iostream>

using namespace std;

 

int main(int argc, char* argv[])

{

         int  i=0;

         While(true) {

                   if(0==i%100000000)std::cout<<i<<endl;

                   if(0>i){cout<<"此时i=" <<i<<",终于满足了退出条件(真不容易啊)!"<<endl;

                                               cout<<"(本次循环的)上一次i是什么呢?i-1="<<i-1<<endl;

                                     break;}

                   ++i;

         }//for(inti=0

         return0;

}

 while 这样语句,貌似“出口”更灵活一些(这是不是发明while语句的初衷呢?)……但实际上,完全可以既保持for语句的紧凑,又灵活地把for的“出口”设计好(唯一、且精确)。

虽然有阅读习惯各有所爱的问题,但象 for (int =0;true;++i) 这样把所有循环的内容放在一起总会显得紧凑,不容易出错吧。

 

结论:轮子还是 for 做得好。

任何一个 while, do…while, 甚至 until 构成的循环都可以用for 来改造;

而且更好更紧凑。当然我是从程序阅读紧凑这方面来讲的。

高手们来反汇编一下,然后告诉大家到底那个效率更高吧。

 ----

附送个:

计算机科学箴言:

程序是用来给人阅读(用的),只是顺便给电脑运行(能运行得好当然更好)而已。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值