前言:
2019 手机直播卖货火了起来,手机扫描文件,人脸识别等好多技术也越来越火。方便人们的技术以后会涉及生活的更多地方。因此,这种技术以后是种趋势,会需要很多研发人才。作为安卓开发者,选择音视频开发方向或者NDK是个不错的选择。而这个方向学习 c/c++ 是必须的,这里我们先学习c语言。
c语言入门
1.C语言的编译过程:
- 预处理 预处理阶段主要处理include和define等。它把#include包含进来的.h 文件插入到#include所在的位置,把源程序中使用到的用#define定义的宏用实际的字符串代替
- 编译 编译阶段,编译器检查代码的规范性、语法错误等,检查无误后,编译器把代码翻译成汇编语言
- 汇编 汇编阶段把 .s文件翻译成二进制机器指令文件.o,这个阶段接收.c, .i, .s的文件都没有问题
- 链接 链接阶段,链接的是其余的函数库,比如我们自己编写的c/c++文件中用到了三方的函数库,在连接阶段就需要连接三方函数库,如果连接不到就会报错
可以通过以下命令进行操作分布实现 :
// 将导入所有的.h文件(包括.h中引用的文件)
// #define定义的宏用实际的字符串代替
gcc -E main.c -o main.i
//检查代码的正确性
//编译成汇编语言
gcc -s main.i -o main.s
//将汇编语言翻译成二进制机器码
gcc -c main.s -o main.o
// 添加 我们引用的所有 静态库(.a)
gcc main.o -o main.exe
2.数据类型
整数类型
上表是不同整数类型所占的存储大小和取值范围。这里需要我们注意的是:不同的编译器下,数据存储的大小可能不同。
浮点型
以上就是整数和浮点数的存储大小和他们的精度,我们可以通过代码 sizeof 查看不同类型的存储大小。
//char
printf("char 的存储大小:%d\n", sizeof(char));
printf("unsigned char 的存储大小:%d\n", sizeof(unsigned char));
printf("signed char 的存储大小:%d\n", sizeof(signed char));
//int
printf("int 的存储大小:%d\n", sizeof(int));
printf("unsigned int 的存储大小:%d\n", sizeof(unsigned int));
printf("signed int 的存储大小:%d\n", sizeof(signed int));
//short
printf("short 的存储大小:%d\n", sizeof(short));
printf("unsigned short 的存储大小:%d\n", sizeof(unsigned short));
printf("signed short 的存储大小:%d\n", sizeof(signed short));
//long (这里还有个 long long)
printf("long 的存储大小:%d\n", sizeof(long));
printf("unsigned long 的存储大小:%d\n", sizeof(unsigned long));
printf("signed long 的存储大小:%d\n", sizeof(signed long));
printf("long long 的存储大小:%d\n", sizeof(long long));
//double
printf("double 的存储大小:%d\n", sizeof(double));
printf("double 最大值:%e\n", DBL_MAX); // #include <floa