1.新建文件
touch file1.c
vi file1.c都可新建文件,其中vi进入文件编辑
2.文件终端操作
cat test1.c在终端查看文件的内容
head test1.c在终端查看文件内容,默认查看前十行
head -n test1.c 在终端查看文件内容的前n行
tail test1.c在终端查看文件内容,默认查看后十行
tail -n test1.c 在终端查看文件内容的后n行
3.报错相关
warning:警告,不影响程序执行
error:遇到报错之后编译结束,不会生成可执行文件
4.vscode
在终端中输入code 文件夹名字可在vscode中打开文件夹
5.gcc编译器
gcc test.c 编译文件,生成a.out
./a.out
或
gcc test.c -o test(可执行文件名)
./test
完整编译分为四步:
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
6.计算机存储单位
计算机最小存储单位 位bit 字节byte
1字节=8位 位:0 1
1KB=1024B 1024
1MB=1024KB
1GB=1024MB
1TB=1024GB
7.计算机数据表示形式
7.1 数值型数据
二进制 0 1 2:10
八进制 0-7 8:010
十进制 0-9
十六进制 0-9 a-f 16:0x10
a | b | c | d | e | f |
10 | 11 | 12 | 13 | 14 | 15 |
- 十进制转二进制:
1)短除法
2)拆分法 8421
3)计算器--->导航---->程序员
- 二转十 8421
- 二转八
一位八进制用三位二进制转
11 010 110--->0326
- 八转二
0777--->111 111 111
- 二转十六
一位十六进制用四位二进制转
1101 0110---》0xd6
- 十六进制转二进制
0xab--->10101011
7.2 非数值型数据
终端输入
man man
可打开man手册
输入
man ascii
可查看ascII表
8 词法符号
运算符 关键字 标识符 分隔符 标点符号
8.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
共32种
8.2 标识符
在给变量、数组、函数等命名时, 遵循标识符的命名规则:
1)由字母、数字、下划线(_)组成
2)开头不能是数字
3)不能和关键字重名
4)见名知意
作业:
1.
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 10;
int b = a--; //b=10
int c = a + b + 2; //a=9,b=10,c=21
int d = (b--) + (++c); //c=21+1=22,d=10+22=32,b=10-1=9
printf("%d\n",d); //d=32
}
[单选题] *
A. d = 31
B. d = 32
C. d = 33
D. d = 34
所以选B。
2.
-
int k = 011;
011
是八进制表示,所以它的值实际上是十进制的9- 因此,
k = 9
-
printf("%d\n", k++);
k++
是后递增操作,表示先使用k
的当前值,然后再递增k
- 因此,
printf
会输出k
当前的值(即1
) - 输出之后,
k
递增1,变为10
-
return 0;
k
初始化为八进制的011
,即十进制的9printf
输出9- 之后,
k
递增为10
最终,程序输出的结果是9。
D
取余只能用于整数运算。