2.1 编写一个简单的 C 程序

2.1.2 编译和链接

把程序转化为可执行的形式总共分三步:

  1. 预处理:预处理以 # 开头,这里讲一下 #include ,它的意思是包含一个源文件,比如我们的 printf 方法,实际上 C 语言本身是没有这个输入输出方法的,是后来的人为了方便写的一个可以理解为“库”的头文件,以后我们只要调用 #include 就可以快速实现输入输出功能了。而且,当加入了预处理后,源文件将比你自己写的程序大,因为相当于你引入了别人的代码。
  2. 编译:接下来程序进入编译器,编译器将程序员看得懂的 C 语言代码翻译成计算机才能识别的机器指令(目标代码)
  3. 链接:将目标代码和其他附加代码整合在一起,形成最后可执行的程序

开心的是,如果你使用的是像 Dev 一样的 IDE ,那么软件将会帮你自动完成这些工作

2.2 简单程序的通用格式

C 语言用 { },来标识程序块的开始和结束,在一些语言中你可能看到 begin 和 end ,二者的作用一样

2.2.2 函数

  1. 函数分为两大类:一个是程序员自己编写的函数,另一种是库函数,就是类似于 中包含的那些函数
  2. 任何程序必须有一个 main 函数

注意:

  1. printf("111"); 这个东西叫字符串字面量

2.3 注释

C 语言的注释有两种形式,单行和多行

  1. // 注释
  2. /*
  3. 多行注释
  4. 多行注释
  5. 多行注释
  6. 多行注释
  7. 多行注释
  8. 多行注释
  9. */

当然也可以比较花哨

  1. /*************************
  2. * 盒型注释 *
  3. * 盒型注释 *
  4. * 盒型注释 *
  5. * 盒型注释 *
  6. *************************/

2.4 变量和赋值

  1. float 变量需要的存储空间大于 int 变量,而且运算也更慢,同时 float 存储的是近似值,比如数据 999-999-999,最后得到的结果可能是 10-000-000-000.

image.png

2.4.4 显示变量的值

  1. 对于 float 而言,%f 是用于显示其结果占位符,就像上方。默认 %f 显示小数点后 6 位。如果你想让其显示 n 位,语法如下:%.nf,其中 n 表示想显示的位数。
  1. #include <stdio.h>
  2. main()
  3. {
  4. float a = 3.14159265;
  5. printf("%f\n%.2f\n%.10f",a,a,a);
  6. }
  7. // 输出
  8. 3.141593
  9. 3.14
  10. 3.1415927410

2.4.6 初始化

如果你没有给变量赋初值,而输出变量的值,那么值可能是 0(某些变量会自动赋值位 0) 或者是一些其他奇怪的数值。

  1. #include <stdio.h>
  2. main()
  3. {
  4. float a;
  5. int b;
  6. char c;
  7. printf("%f %d %c",a,b,c);
  8. }
  9. // 输出
  10. 0.000000 0

2.6 定义常量

常量就是程序中那些固定不变的量,与变量对应。
通常我们用 #define 来定义常量,就像这样:#define CONST 100

常量的定义通常位于程序的最上方,且和#include 一样不加分号,因为是预处理指令,特别注意的是常量通常都是以大写字母命名的,虽然不是 C 语言本身的要求,但这是代码规范。

  1. #include <stdio.h>
  2. #define CONST 100
  3. main()
  4. {
  5. int a = CONST+100;
  6. // CONST = 10; 常量是不能在定义后对其进行赋值的,会报错
  7. printf("%d %d\n",CONST,a);
  8. }
  9. // 输出
  10. 100 200

2.7 标识符

标识符用于对变量,函数,宏等进行命名,其命名的规范是,标识符只能由字母,数字,下划线组成,并且必须以字母或者下划线开头。

注意:

  1. C 语言是区分大小写的,如,Name 和 name 是不同的标识符
  2. 对于长的标识符,通常采用两种规范进行命名
    1. symbol_table
    2. symbolTable

关键字
image.png
在对标识符命名时,避免采用以上关键字,这些是 C 语言自己使用的特殊字符,都是有各自作用的。