C语言:基础知识

基础C语言----基本知识

如何在虚拟机上写代码

1、打开终端(Ctrl+Alt+t),mkdir day01 创建目录,cd 目录名。
2、vim file.c,进入vim文本编辑器,输入i,进入代码编辑模式。
3、编写代码,Ctrl+x执行代码,Ctrl+z保存退出。
4、vimtutor

第一个C语言程序:

#include 功能是把头文件导入到当前代码 ( stdio startand in out head )
#include

main 是C代码的执行入口,有且只能有一个。
int main()
{
printf和scanf是用来调试代码的,它模拟从界面获取数据、显示数据到界面
\n是一种转义字符,很多不能正常显示的文件都会有一个替换的转义字符
\r (回到行首)
\b (退格)
\\ ( \ )
%% (%)
\t (制表符)
C语言中代码以分号为结束标志,; 有特殊含义。
printf(“hello world!\n”);

// 把函数的执行结果返回给调用者,结束函数的执行。
return 0;

// C语言中{ }对代码进行划分管理区域

编程基础知识

编辑器:类型记事本一样的用来编写代码的工具。
编译器:负责把代码文件翻译成可执行程序的软件。
gcc 是GNU社区为编译Linux内核开发的一款编译器。
gcc code.c -> a.out

编译器是如何把C代码翻译成可执行程序的:
1、预处理
把代码中以#开头的指令翻译成标准的C代码,生成预处理文件。
gcc -E code.c -o code.i
2、汇编
把预处理文件翻译成汇编文件
gcc -S code.i -> code.s
3、编译
把汇编文件翻译成目标文件(二进制)
gcc -c code.s -> code.o
4、链接
把若干个目标文件合并成一个可执行文件
gcc a.o b.o c.o -> a.out

C语言的数据:

为什么要把数据进行分类:
1、现实社会中的数据是自带类别属性。
2、对数据进行分类型可以节约存储空间、提高运行效率。

C语言中数据分类两人大类自建(程序自己设计的,如:结构、联合、类)和内建(C语言自带)。

整型:

char、short、int、long、long long
有符号 signed : 它存储数据的二进制位中最高位用来表示正负。
无符号 unsigned :它的所有的二进制位都用来存储数据,只能表示正数。

浮点型:

float 单精度
double 双精度
long double 高精度
浮点型数据采用的是科学计数,可以表示较大范围的数据,但是精确度有限。
浮点型的数据由于格式特殊,所以运算的效率不高,编程时优先选择整型。

布尔类型:C语言中没有真正的布尔类型,若使用必须添加头文件stdbool.h

bool true false

字符型:字符其实就是符号或图案,在计算机中是以整数形式存储的,当需要显示时会根据ASCII表中的对应关系,显示相应的符号。

‘\0’ = 0
‘0’ = 48
‘A’ = 65
‘a’ = 97

变量:

存储数据的容器,需要先定义后使用。
定义:类型 变量名;
注意:刚定义的变量默认值是不确定的,为了安全一定要初始化(养成良好的习惯)。

变量的取名规则(标识符的取名规则):
1、只能由字母、数字、下划线组成。
2、不能以数字开头。
3、不能与关键字重名(32个关键字)。
4、尽量不要超过30个字符。
5、见名知义(功能+类型+作用域+…)。

C语言中通过使用占位符的方式来告诉printf/scanf变量的类型。

变量的输出:printf 类型 变量名

变量的输入:scanf 类型 变量的地址=&变量名

sizeof 计算变量的字节数。

练习:定义各类型的变量,使用scanf接收,使用printf显示,使用sizeof计算变量的字节数。

常量:

字面值常量(代码中能直接使用的数量:100,1000),不可被修改,存储在一块只有只读权限的内存中(代码段)。
设置字面值常量的类型:
默认是int(10)类型,或double(3.14)类型。
10u unsigned short
10U unsigned int
10u8 unsigned char
3.14f float
3.14l long double

运算符:

算术运算符:+ - * / %

/ % 除数不能为零,如果除数为零程序会提前死亡。
关系运算符:> < >= <= == !=
运算的结果是逻辑:true=1 false=0
==使用时常量放在左边,变量放右边。
num == 10;
10 == num; 防止出错

10 < num < 100; 数学中[11,99],C语言中永远为真。

自变运算符:++/–

可以让变量的值自加1或自减1(只有变量才能使用)。
前自变:++/–num,立即有效。
后自变:num++/–,下一行代码才会生效。
一行代码中不要多次使用自变运算符。

逻辑运算符:&& || !

在运算之前会把运算对象转换成逻辑值:零值转换成假,非零值转换成真,然后再对逻辑值进行运算,得到的结果也是逻辑值。
A && B 一假即假
A || B 一真即真
!A 对A的值求反

!比&&、||运算级别要高(单目运算符的级别都比较高)。先后顺序 (not and or)
&&、|| 具有短路特性,当左边的值已经能确定表达式的结果,右边的值则不再计算(注意思维误区,还可以借此形成精简的分支结构)。
int num = 0;
num>0 && num–;

赋值运算符及扩展:= += -= *= /= …

num += 10 <=> num = num + 10;

三目运算符:[1] ? [2] : [3];

当1的值为真时执行2,否则执行3,类似if语句。
不能使用流程控制语句,因为毕竟是运算符,必须要有运算结果。

字节数运算符:sizeof

1、sizeof不是函数而是运算符,而且是32个关键字之一。
2、只是推算表达的结果是什么类型、占多少个字节(取最大的),而不计算表达式。

位运算符:& | ~ ^ << >>

你可能感兴趣的:(基础C,嵌入式)