![954565a822cc9d3606a84e35705cf3d2.png](https://i-blog.csdnimg.cn/blog_migrate/69439a26e8f51c7a61ccdddca2fe2a51.png)
计算整数 20 和 45 的和,并显示结果。在编辑器中键入如代码清单 demo1.c 所示的程序代码。
代码清单 demo1.c
/*
显示整数 20 和 45 的和
*/
#include <stdio.h>
int main() {
printf("%d", 20 + 45);
return 0;
}
程序编译和运行
编译程序 demo1.c,生成可执行文件 demo1
gcc demo1.c -o demo1
运行程序 demo1
./demo1
屏幕显示:
65
程序分析
printf函数: 格式化输出函数
printf 函数 可以在显示器上进行输出操作(末尾的f源自format(格式化)这个单词)。
printf 函数的第一个实参"%d"指定了输出格式,它告诉程序:以十进制数的形式显示后面的实参。因此,通过调用printf函数显示出了第二个实参 20 + 45 的值,即 20 与 45 的和 65。
► "%d"的d源自decimal(十进制数)。
语句
请大家仔细观察之前的程序代码,调用printf函数的时候使用了分号,那段固定代码(return 0;) 中也使用了分号。这里的分号就相当于中文里的句号。
正如在句子末尾加上句号才能构成完整的一句话,C语言中也需要在末尾加上分号来构成正确的语句(statement)。
开始执行程序后,固定代码中 { 和 } 之间的语句会被按顺序执行。
格式化字符串和转换说明
程序运行的时候如果只显示和或者差的值,理解上会比较困难,接下来我们让结果显示得更加人性化一些,修改 demo1.c,这次我们把printf函数的第一个实参设置得更长更复杂一些。
代码清单 demo2.c
/*
人性化的显示整数 20 和 45的和
*/
#include <stdio.h>
int main() {
printf("20与45的和是%d。n", 20 + 45);
return 0;
}
代码清单 demo2.c 中的 "20与45的和是%d。n"
是printf函数的第一个实参,称为 格式化字符串(format string)。
格式化字符串中的%d指定了实参要以十迸制数的形式显示,这就是 转换说明(conversion specification)。格式化字符串中没有指定转换说明的字符基本上都会原样输出。
格式化字符串结尾的n是代表换行(new line)的符号,和n组成了一个特殊的 换行符。
►画面中不会显示和n,而是会输出一个(看不见的)换行符。
★ 专题 换行的必要性
下面所示为代码清单 demo1.c 的运行情况($ 表示操作系统提示符,实际根据自己所用操作系统决定),
$ ./demo1↙
65
在大多数运行环境中,程序执行后,程序的输出结果65后面都会紧跟着提示符。
如代码清单 demo2.c 所示,若在程序的最后输出了换行符(n),则不会紧跟着提示符。如下所示:
$ ./demo2↙
20与45的和是65。
$
符号的称呼
C语言里符号的称呼如表 1 所示。
■ 表 1 符号的称呼
![a463b126ee411f963a19c49d93b098d2.png](https://i-blog.csdnimg.cn/blog_migrate/262fb4e391cf7fa027df3faddb90211b.jpeg)
无格式化输出
调用 printf 函数的时候也可以只使用一个参数。这时,格式化字符串内的字符将按照原样显示。显示 您好!我叫小明。“
的程序如代码清单 demo3.c 所示。
► 大家在编写程序吋可以将这里的
小明
改为自己的名字。
代码清单 demo3.c
/*
打招呼并进行自我介绍
*/
#include <stdio.h>
int main() {
printf("您好!我叫小明。n");
return 0;
}
下面我们稍微把程序修改一下,让 “您好!”
和 “我叫小明。”
分别在两行显示。修改后的程序如代码清单 demo4.c 所示。
代码清单 demo4.c
/*
打招呼并进行自我介绍
*/
#include <stdio.h>
int main() {
printf("您好!n我叫小明。n");
return 0;
}
在格式化字符串中间插入 n 就可以实现换行操作。而像代码清单 demo5.c 那样,调用两次printf函数也可以得到同样的效果。
代码清单 demo5.c
/*
打招呼并进行自我介绍
*/
#include <stdio.h>
int main() {
printf("您好!n");
printf("我叫小明。n");
return 0;
}
这样程序是不是更易读了呢?
字符串常量
像”ABC"和"您好!"这样用双(")括起来的一连串连续排列的文字,称为字符串常量(string literal)。
转义字符
我们已经介绍了能够实现换行的特殊符号 n
,像这样的特殊符号称为转义字符(escape sequence)。
响铃(alert)的转义字符是 a
。代码清单 demo6.c 中的程序,在显示 您好!
之后响铃3次。
代码清单 demo6.c
/*
打招呼并响铃3次
*/
#include <stdio.h>
int main() {
printf("您好!aaan");
return 0;
}
► 程序在某些环境下运行吋可能不响铃(通常情况下都是发出蜂鸣音,即“哔”的声音,但有吋并不发出声音,而是通过视觉来发出警报)或者连续响铃3次。