对于经验比较丰富的 C 语言程序员,可以把这个字符复制程序编写得更精炼一些。在 C语言中,类似于
c = getchar()
之类的赋值操作是一个表达式,并且具有一个值,即赋值后左边变量保存的值。也就是说,赋值可以作为更大的表达式的一部分出现。如果将为 c 赋值的操作放在 while 循环语句的测试部分中,上述字符复制程序便可以改写成下列形式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(int argc, char *argv[]) { int c; c = getchar(); while ( c != EOF ) { putchar(c); c = getchar(); } return 0; } |
在该程序中,while 循环语句首先读一个字符并将其赋值给 c,然后测试该字符是否为文件结束标志。如果该字符不是文件结束标志,则执行 while 语句体,并打印该字符。随后重复执行 while 语句。当到达输入的结尾位置时,while 循环语句终止执行,从而整个 main 函数执行结束。
以上这段程序将输入集中化,getchar 函数在程序中只出现了一次,这样就缩短了程序,整个程序看起来更紧凑。习惯这种风格后,读者就会发现按照这种方式编写的程序更易阅读。我们经常会看到这种风格。