程序设计基础:字符能像整数一样计算
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语句。"
C语言编程 相关文章:
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 所有C语言数组和指针的知识都在这里了!|周立功手把手教你学C语言编程(08-01)
- 周立功《程序设计与数据结构》:字符串函数(08-05)
- 周立功手把手教你学C语言编程:用数组,构造一个双重指针(08-04)
- 周立功教你学程序设计结构体:内存对齐和基本数据类型(08-01)
- 跟周立功学C语言编程:如何将二维数组作为函数参数传递?这三要素要时刻谨记!(08-06)