一、gcc编译器:
1、一步编译:
gcc xxx.c ---->默认生成一个名为a.out的可执行文件 -----> ./可执行文件名 (./a.out)
-o参数
多个C程序只能保留同一个a.out,生成其他的可执行文件,实现可以同时保留多个源文件可执行文件。
gcc xxx.c -o hello ----->gcc编译后生成指定的hello可执行文件 -oout
./hello
gcc -o hello xxx.c ---->生成指定的hello文件,./hello
【2】分步编译 ESc->iso(笔试面试题)
预处理---->编译----->汇编----->链接
i)预处理 -E -o xx.i
gcc -E hello.c -o hello.i
展开头文件,替换宏定义,删除注释,不检查语法错误,生成编译文件
ii)编译 -S -o xx.s
gcc -S hello.i -o hello.s
检查语法错误,生成汇编文件
iii)汇编 -c -o xx.o
gcc -c hello.s -o hello.o
生成二进制文件
iv)链接
gcc hello.o -o hello
链接到程序执行所需要的动态库/静态库,生成可执行文件
运行程序, ./hello
二、数制转换:
各种进制转10进制:位码*该位的位权之和(如8进制是8^n,n从0开始)
10转N进制:辗转相除法
2、8、16进制间的转换,分别对应1、3、4位,
0b二进制前导符,0八进制前导符,0x/0X十六进制前导符
三、C语言数据类型:
基本数据类型:int、float、long
构造数据类型:数组、结构体、共用体
指针
void空类型
整形:short、int、long、longlong
浮点型:float、double
非数值类型:char
四、常量:
1、整形常量:120、19... 占位符用%d
2、浮点型常量:3.1415、小数 占位符用%lf
3、字符型常量:'a'、'0'、'\n' 占位符%c输出字符,%d输出字符对应的ascii值
4、字符串常量:"hello world"、"hqyj" 占位符用%s
5、宏定义常量:无参宏定义:#define 宏名 宏体
有参宏定义:#define 宏名(参数1,参数2,····) 宏体
#defin ADD(a,b) a+b
注意:宏定义是简单替换的过程,带参宏加#可输出字符串,宏定义不用加;
五、变量:
六种存储类型:
auto:自动类型,局部变量默认是auto,全局变量不能使用auto修饰
extern:引入外部文件中的变量,全局变量默认是extern类型 static:静态,
const:给变量常属性,const修饰的变量值不能被修改
register:寄存器类型,把变量定义到寄存器中,会提高访问速度,寄存器类型的变量不能取地址
volatile:每次从内存中取值
标识符的命名规范
- 由数字、字母和下划线构成
- 不能由数字开头
- 严格区分大小写
- 不能和C语言的32个关键字重复
强转的注意事项:
大的数据类型转小的数据类型是不安全的,会发生数据的丢失
小的数据类型转大的数据类型是安全的
原码、反码和补码
原码:数据的二进制 ----->给人能看懂的
反码:原码转补码的中间形式
补码:机器能读懂的
无符号数和有符号数的正数:原=反=补
有符号数的负数:原码除符号位都置反就是反码,反码加1就是补码
有符号数和无符号数
有符号数和无符号数一起参与运算时,会转成无符号数进行运算
默认变量都是有符号数,signed(有),unsigned(无),0正1负
计算机中数据存取问题:
机器数据存取是“原反补补反原”的步骤,进去看正负,出来看类型
作业:
1~2、4~5:有道云笔记
3:有道云笔记