C语言差缺补漏,补充一些容易遗忘忽视的知识点(一)

C语言差缺补漏(一)

看看你有哪些没有注意到的点或者遗忘的知识点

1. 编译流程

编译经历过程   (选择linux下的编译器才能看到编译过程,例:g++)

  1. 编辑器:程序员用来编辑代码的程序 (记事本,VC6.0,vim)
    此处有一个预处理过程 ) C生成 .i 文件 C++生成 .ii 文件
                                                                  —— 这一步主要是无关代码的清除

  2. (编译)编译器:查看检查代码的语法错误,将.c/.h转换成汇编代码文件 .s

  3. (汇编)汇编器:将生成好的汇编语言文件,生成二进制语言文件(目标文件) .o

  4. (连接)连接器:将生成好的二进制语言.o + 用到的库.a + 启动代码 = 可执行文件
              (可执行文件类型:windows下.exe,linux下无需讨论)

2. C语言的关键字32个(不能用来作变量名)

    1.数据类型关键字(12个) 32位编译环境下
字符型 短整型 整型 长整型 单精度浮点型 双精度浮点型
char short int long float double
1字节 2字节 4字节 4字节 4字节 8字节

long int x; 表示 x 是长整型  

无符号类型 有符号类型 结构类型 共用类型 枚举类型 空类型
unsigned signed struct union enum void

不能用void定义变量,系统不能确定给变量分配多少内存空间

    2.控制语句关键字(12个)
条件语句 条件否定分支 开关语句 开关语句分支 开关其他分支 for循环语句
if else switch case default for
do循环体 循环语句条件 跳出循环语句 下一轮循环 无条件跳转 子程序返回
do while break continue goto return
    3.储存类型关键字(5个)
声明外部变量 声明寄存器变量 声明静态变量 声明只读变量 声明自动变量
extern register static const auto

注意:
如果没有register int num来声明,只用int num来定义,但num使用很频繁,系统会自动将其放入寄存器,且寄存器里不能取地址

    4.其它关键字(3个)
计算数据类型长度 给数据类型取别名 防止编译器优化
sizeof typedef volatile

volatile 防止编译器优化↑(优化操作:自动存放变量到寄存器(3.注意)),强制访问内存操作
volatile int num;//每次都从内存中访问,能时刻最快地监控变量

main     define    scanf    printf  
不是关键字

3. 整数与实数

  1. C 语言常量只有八、十、十六进制,没有二进制,不能输出和储存二进制 (但可以间接实现)
  2. C 语言中的八进制规定要以 0 开头。八进制每位没有8,十进制每位没有10

    十进制:%d %u %ld %lu
    八进制: %o
    十六进制: %x


    **注:输出时最好在占位符中添加 # ,按其对应进制格式输出
    %#o     %#x
 输入100 		八进制		十六进制	
 对应输出 		%o:144      %x:64
                %#o:0144    %#x: 0x64

这样输出的结果会按照该进制的格式输出

  1. C 语言小数点两边有一个是零的话,可以不用写

    1.0 在 C 语言中可写成 1.
    0.1 在 C 语言中可以写成 .1
  2. 实型数据的合法形式
    1. 指数形式表示常量 123e3表示123*10^3
              2.333e-1 就是合法的,且数据是 2.333×10^-1
    2. 以f结尾的实型常量,为float类型,无f则定为double类型
    3. float:7位有效数字 指数-37到38
      double:16位有效数字 指数:-307到308

      注意:printf();输出浮点类型时,自动设置最多输出小数点后6位


**笔记更新中**

你可能感兴趣的:(C语言)