怎么像整数一样计算字符?
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语句。"
数据结构 相关文章:
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功手把手教你学嵌入式编程:函数指针与指针函数的应用(07-29)
- 周立功《程序设计与数据结构》:字符串函数(08-05)
- 嵌入式如何进一步成长,该学习哪些书呢?(08-13)
- 不完全类型和抽象数据类型的定义(08-14)
- 算法与数据结构——接口(08-19)