微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 怎么像整数一样计算字符?

怎么像整数一样计算字符?

时间:08-14 来源:ZLG致远电子 点击:

9         return 0;

10   }

 

当然,也可以用getchar()的另一种惯用法替代程序清单1.36(6):

while((ch = getchar()) != '\n') 

 

即将读入的一个字符与换行符比较,如果测试结果为true,则执行循环体,接着重复测试循环条件,再读入一个新的字符,同时getchar()用于搜索字符和跳过字符等效。比如:

while((ch = getchar()) == ' ')

 

当循环终止时,变量ch将包含getchar()遇到的第一个非空字符。

 

 do-while 

 

do-while循环远比for和while循环用得小,因为它至少需要执行循环体一次,且在代码的最后而不是开始执行条件循环测试。逻辑条件应该出现在它们所"保护"的代码之前,这也是if、while和for的工作方式。通常阅读代码的习惯是从前向后,当使用do/while循环时,需要对这段代码读两次。同时,这种方式在很多情况下是不正确的,比如:

?     do{ 

?            ch = getchar(); 

?            putchar(ch); 

?     }while(ch != EOF);

 

由于测试被放在对putchar()的调用之后,因此该代码无端地多写了一个字符。只有在某个循环体必须至少执行一次的情况下,使用do-while循环才是正确的。

 

另一个让人迷惑的是,do/while循环中的contiune语句:

do{ 

       continue; 

}while(false); 

 

它会永远循环下去还是只执行一次?虽然它只会循环一次,但大多数人都会想一想。C++的开创者Bjarne Stroustrup是这样说的,"do语句是错误和困惑的来源,我倾向于将条件放在前面我能看到的地方,避免使用do语句。"

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top