C语言day02(vi编辑器、数据表示形式、词法符号)

C语言day02

【1】vi编辑器

进入vi编辑器

vi 文件名

若文件存在,则直接打开文件;若文件不存在,则创建并打开文件。

1.三种模式:

插入模式(编辑模式):编辑正文,敲代码

命令行模式(默认进入):在此模式下只能做一些命令的操作(不能编辑正文内容)

底行模式:在此模式下只能做一些命令的操作(保存、退出、分屏)

三个模式下的操作指令:

底行模式:

保存:w

退出:q

保存退出:wq

强制:!

不保存退出:q!

查找:/str

替换:s/str/str1将光标所在行的第一个str替换成str1

全部替换:%s/str/str1/g 将str全部替换成str1

设置行号:set nu

取消行号:set nonu

取消高亮:nohl

指定行的复制:5,10y

指定行的删除:5,10d

命令行:

复制:yy 多行 nyy(n:表示的是行数 光标所在行到n行数内容)

删除(剪切):dd ndd

粘贴:p

撤销:u

反撤:ctrl+r

光标的移动:移动到首行:gg 移动到末行:G 移动到行首:0 移动到行尾:$

整理代码的格式:gg=G

【2】gcc编译器

  1. 预处理 展开头文件、替换宏定义,删除注释

gcc -E test.c -o test.i

  1. 编译 检查语法,有错报错,没有则生成汇编语言

gcc -S test.i -o test.s

  1. 汇编 生成一个不可执行的二进制文件

gcc -c test.s -o test.o

  1. 链接 链接函数库,最终生成一个机器可以识别的二进制可执行文件

gcc test.o -o test(可执行文件)

上面这是一个完整的gcc编译过程,但是编译过于繁琐,正常编译采用下面这两种简便的代码编写

gcc test.c 会生成一个a.out的可执行文件,这个可执行文件每当有一个新的文件被这样执行就会覆盖掉之前的a.out可执行文件

gcc test.c -o test(自己定义的文件名) 这个命令会生成一个test的可执行命令,不会像上一个指令那样被新的文件覆盖

补充指令:cat 文件名:显示文件内容

【3】计算机存储单位

位 bit 字节 byte

1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB

【4】计算机数据表示形式

1》数值型数据

二进制 0 1 10

八进制 0-7 010

十进制 0-9

十六进制 0-9 a-f 0x10

A

B

C

D

E

F

10

11

12

13

14

15

1.十进制转二进制:

  1. 短除法 除2到取余数

17 10001

2.拆分法 8421

2.二进制转十进制

权值乘以0、1

权值就是从右往左2的n-1次方

01001-->9

3.二进制转八进制

每三位看做一个八进制位,不够在前面补零

1011010-->001011010-->132

4.二进制转十六进制

每四位看做一个十六进制位,不够在前面补零

100101010-->000100101010-->0x12a

2》非数值型数据

man 手册查看ascii码表

man手册:man 章节号 名称

1 可执行程序或 shell 命令

2 系统调用(内核提供的函数)

3 库调用(程序库中的函数)

char字符 由' '包裹一个字符

'\0' 0 字符串结束标

'\n' 10 换行

space 32 空格

'0' 48 字符0

'A' 65

'a' 97

(1)字符1-9转换为数字1-9 需要减48

(2)字符小写字母a~z转换为大写字母A~Z 需要减32

(3)字符大写字母A~Z转换为小写字母a~z 需要加32

(4)\ 转义字符,转义字符可以将其后面的三位数字所代表的八进制数据转换为相对应的ASCII字符或数字

printf("%c\n",'a');			//a        %c字符类型
printf("%d\n",'a');			//97			%d数字类型
printf("%d\n",' ');			//32
printf("%d\n",'1');			//49
printf("%d\n",'1'-48);		//1
printf("%c\n",'A'+32);		//a
printf("%c\n",'\071');		//9

【5】词法符号

1》关键词 32个

概念:由系统预定义的具有特殊功能的词法符号

存储类型:auto(自动) static(静态) extern (外部引用) register(寄存器)

数据类型:int(整型) char(字符) short(短整型) long(长整型) float(单精度浮点型) double(双精度浮点型) signed(有符号) unsigned(无符号)

构造类型:struct(结构体) union(共用体) enum(枚举)

选择类型:if else switch case default

循环结构:for while goto do break continue

其他类型:void(空) typedef(重定义) const(常量化) sizeof(计算内存空间大小)

volatile(防止编译器优化) return(返回值)

栈区:局部变量 由系统自动开辟空间、自动回收

堆区:由程序员手动开辟空间malloc、回收free

全局区/静态区:.bss .data 全局变量(全局区) static修饰的变量(静态区)

常量区: char *p="hello";

2》标识符

标识符用于给变量名、宏名、函数名、重定义名等等。

命名规则:

  1. 由字母、数字、下划线_组成
  2. 开头不能是数字
  3. 不能和关键字重复
  4. 最好见名知意

驼峰 niceDay小驼峰命名 NiceDay大驼峰命名

练习:

x*y a@b 6a a8 _a_B sum

3》运算符

算术运算符

+ - * / % ++ --

/ 整数相除,结果向下取整

9 / 2 = 4

9.0 / 2 = 4.5

% 取余 5%2==1 只能用于整数运算

++:在自身基础上做+1的操作(单目运算)

int a=1;

a++ ++a===>a=a+1 =2

只要语句中不只有++一种操作:

++在前:先自身+1,后做其他操作

++在后:先做其他操作,后自身+1

赋值运算:

int a = 1;
int b = ++a;       //b=2,a=2 (先自加在赋值)
int c = a++;       //c=1,a=2 (先赋值再自加)

单独成句:

int a = 1;
a++;
++a;    //两个表达式最后a都等于2  单独成句就不会又过于复杂的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值