编写程序,统计输入的字符数:
/* count.c */
#include <stdio.h>
int main() {
long nc = 0;
while (getchar() != EOF) {
++nc;
}
printf("%ld\n", nc);
return 0;
}
while 循环体内执行计数操作:
++nc; /* 语句 1 */
/* 等价于 */
nc = nc + 1; /* 语句 2 */
语句 1 中的 “++
” 称为自增运算符,相应的有自减运算符 (“--
”),可作为前缀运算符(如 ++nc、--nc),也可作为后缀运算符(如 nc--、nc++)。相较于语句 2,语句 1 的形式更精炼,效率通常也比较高。
nc 的数据类型为 long
,即长整型,long 的长度不小于 int,相应的 printf 语句的转换说明为 "%ld
"。
/* 下面操作将引发编译器警告: */
/* warning: format '%d' expects argument of type 'int', */
/* but arguement 2 has type 'long int' */
printf("%d\n", nc);
可以用 for 循环语句来替代上面程序中的 while 循环:
#include <stdio.h>
int main() {
long nc;
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%ld\n", nc);
return 0;
}
C 语言要求 for 循环语句必须要有一个循环体,因此这里用单独的分号代替,单独的分号称为空语句。
编译运行结果:
- 因为这里换行了,所以是 14。
Hello, world!
14
- 不换行的结果是 13。
Hello, world!13
- 不输入任何字符,结果为 0。
0
网友评论