目录
学习目标:
- 一周掌握 C语言入门基础
学习内容:
1.vi编辑器:
touch test1.c
vi test1.c
文件相关操作:
cat test1.c在终端查看文件的内容
head test1.c在终端查看文件内容,默认查看前十行
head -n test1.c 在终端查看文件内容de前n行
tail test1.c在终端查看文件内容,默认查看后十行
tail -n test1.c 在终端查看文件内容de后n行
vi编辑器的三种模式
1) 命令行模式
打开一个文件默认的就是在命令行模式下,命令行模式一般是用来复制和粘贴代码的。其他模式下按 esc 按键就可以回到命令行模式。
2) 插入模式
插入模式才是能用来插入文本的,进入插入模式的方式:
在命令行模式下:
i 在光标前开始插入
I (大写的i)在光标所在行的行首开始插入
a 在光标后开始插入
A 在光标所在行的行尾开始插入
o 在光标所在行下面新起一行开始插入
O 在光标所在行上面新起一行开始插入
3) 底行模式
在命令行模式下 输入冒号 : 就进入了底行模式
底行模式主要是用来保存退出的
:w 保存
:q 退出
:wq 保存并退出
:q! 不保存强制退出
2.vscode编辑器
打开vscode来编译代码。
3.gcc编译器
完整编译四部
1.预处理
展开头文件,替换宏定义,删除注释
gcc -E test.c -o test.i
2.编译
检查语法问题,有错报错,没有则继续运行生成汇编文件
gcc -S test.i -o test.s
3.汇编
生成一个不可执行的二进制文件
gcc -c test.s -o test.o
4.链接
链接库函数,最终生成二进制可执行文件
gcc test.o -o test(可执行文件名)
运行:./test
4.计算机的存储单位
4.1 数值型数据的存储
4.1.1 二进制
方便计算机识别的
前导符 0b
逢2进1 每一位上的数字只能是 0 或 1
如:0b1011
4.1.2 八进制
前导符 0
逢8进1 每一位上的数字范围 [0,7]
如:0456 034
4.1.3 十进制
没有任何前导符
逢10进1 每一位上的数字范围 [0,9]
如:1314 521
4.1.4 十六进制
前导符 0x
逢16进1 每一位上的数字范围 0~9 a:10 b:11 c:12 d:13 e:14 f:15
如:0xAB 0X5F
4.2 进制转换
八进制转二进制
方式1:八转十 然后 十转二
方式2:1位八进制数表示3位二进制数
0456 -->0b100101110
二进制转八进制
从右向左,3位二进制对应1位八进制 高位不足时补0
0b1011010-->八进制
0b001011010 -->0132
十进制转二进制:
使用除2取余法:
用这个数除以2,得到商和余数,然后用商再除以2,
又得到商和余数,依次类推,直到商为0时结束
将每一步得到的余数反向取,得到的就是二进制数了
十六进制转二进制
方式1:十六转十 然后 十转二
方式2:1位十六进制数表示4位二进制数
0X5F -->0b01011111
4.3 非数值型数据的存储
非数值型数据实际应用,操作的ASCII码值
man手册 一般用来查看一些命令或函数的用法
终端输入:man man
常见的字符对应的ascii码
'A' 65
'a' 97
'0' 48
'\n' 10
'\0' 0
space 32
转义字符:
任何一个字符都可以用一个 \ 加上一个整数(八进制的)来表示
C语言中还定义了一些 \+字符 来表示那些 无法显示的字符
如 '\n' '\a' '\t' 等。
这字符称为转义字符,因为这些字符已经不是自身的含义了。
4.4 内存单位
字节 Byte
1Byte = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
5.词法符号
5.1 关键字
存储类型:auto static extern register
数据类型:int char float short long double signed unsigned
构造数据类型:struct enum union
分支:if else switch case default for do while go to break continue
其他:void const sizeof volatile return typedef
5.2 标识符
定义标识符时要符合标识符的命名规范:
1.由数字、字母、下划线组成
2.不能以数字开头
3.不能和关键字冲突
4.见名知意
5.3 运算符
5.3.1 算术运算符
+ - * / % ++ --
注意:/整数相除,结果会向下取整,% 要求左右操作数,必须是整数
例如:
练习:1234 使用/ %分别表示出 1 2 3 4
课后作业:
- 解析代码:分析每一步变量的取值
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10; //a=10
int b = a--; //b=10,a=9
int c = a + b + 2; //c=21,b=10,a=9
int d = (b--) + (++c); //d=32,b=9,c=22,a=9
printf("%d\n",d);
} [单选题] *
A. d = 31
B. d = 32
C. d = 33
D. d = 34
答案为B
2.
答案为9.因为k=011,按照八进制位算法得k=9.
3.
答案为D。因为这个运算符用来计算两个整数相除后的余数,因此它的操作数必须是整数类型。