Linux C 学习第二天(VIM的基本操作&C语言基本语法)


命令:熟悉linux系统使用

vim 和 gedit

sudo /etc/apt/sourlist.list

 

C, 使用linux→写代码→编译→运行

编辑器:

vim 复制 移动 粘贴 、 写代码 、     保存

       命令模式        编写模式      底行模式

vim test.c        //使用VIM打开文件text.c 文件

 

i                            编写一段代码(内容无所谓)

Esc                        退出编写模式

j k yy dd p P    练习命令模式

Linux C 学习第二天(VIM的基本操作&C语言基本语法)

vsp 文件名             水平分屏并打开一个文件

sp 文件名               垂直分屏并打开一个文件

分屏后的操作如下:

Ctrl+W:切换分屏;对两个或两个以上分屏同时操作时,在一个屏幕的操作下需要加 -a 

Linux C 学习第二天(VIM的基本操作&C语言基本语法)

编译器:cc

gcc

Step1: 预处理

加载头文件,替换宏定义,注释代码删除,生成有效代码(.i)

gcc -E test.c -o test.i

Step2: 编译

检查C语言的语法错误,如果有错误则停止编译,并提示错误或警告,没有错误则生成汇编代码(.s)

gcc -S test.i -o test.s

Step3: 汇编

将汇编代码汇编生成机器码(目标文件.o),目标文件是不能直接运行的

gcc -c test.s -o test.o

Step4: 链接

将项目中所有的目标文件链接生成可执行文件(链接过程进行符号定位,库函数定位)

gcc test.o -o test

运行:

./test

gcc test.c -o test

总结:Ubuntu 的terminal 的基本操作,针对于文件管理器

Vim 的基础操作,以及对C的编译汇编等等

更多参考:https://blog.csdn.net/wangchong0/article/details/6801956Linux C 学习第二天(VIM的基本操作&C语言基本语法)


C语言基本语法

/* ******************************************* *

数据类型:

Linux C 学习第二天(VIM的基本操作&C语言基本语法)

说明数据大小

char             1

short            2

int                4

float             4

double         8

构造类型-->数组

存储类型:

存放在内存中的位置:

(堆、栈(auto)、静态区域、代码段)

功能:

代码的操作(干什么)

+ - * / % & || 是运算符

控制语句

选择或循环

函数

* ******************************************** */

标识符:

变量:

1. 数字、字母、下划线

2. 首字母不可以为数字,且区分大小写

3. 不可与系统关键字相同

定义变量的格式:

<存储类型> <数据类型> <变量名>

|                   |               |申请空间的别名

|                   |说明申请的空间的大小

|                    |char short int

|说明申请的空间在内存中的位置的。

|auto static extern register

栈 静态 静态 寄存器

int a = 998; //初始化

int b; 先定义

b = 998; 后赋值

 

常量:

直接常量:

int a = 5;

float f = 3.14159;

"hello world";

char c = 'A';

 

符号常量:

#define Pi 3.14159

int a = 6;

int const a = 6;

const int a = 6;            //const表示将a常量化,不可以通过对a赋值改变a的空间

 

存储基本单位:

位bit

字节byte KB MB GB

进制1024 电脑生产厂家生产时按照1000进制进行计算的,所以会少一点

数据的表示方法:

1.整数:

整型数据:

十进制

八进制 <只能表示整数(char short int long)>

十六进制 <只能表示整数(char short int long)>

二进制(C语言不支持,但计算机内部只识别二进制)

进制转换:

十进制<==>二进制

整数-->二进制 辗转相除,除2求余,从下向上读

小数-->二进制 乘2取整,从上向下(大多数都会时近似值)

二进制 ==>八进制

整型数据的有符号与无符号:

signed int x;             //(有符号类型最高位作为符号0表示正数,1表示负数)

unsigned int y;           //(最高位同样作为有效数据位)

 

整型的打印:

printf("%d", x);            //有符号类型

printf("%u", y);            //无符号类型

 

2.字符:

ASCII码:

原码:

直接转成二进制,最原始的二进制表示方法, 但在负数运算时,结果出错.进而提出反码.

反码:

正数的反码和原码相同,负数的反码是在原码的基础上取反(符号位不变). 反码解决了原码不能计算的问题,但同时带来了-0,进而提出了补码. (反码加法采用循环进位的方法)

补码:

正数的补码和反码相同

负数的补码在反码的基础上+1。(对原取反+1,符号位除外)

快速求补法:(补码的补码即原码)

正数:不变

负数:第一个1与最后一个1之间的所有数取反-->即为原码

取值范围:

有符号类型字符 : -128 ~ 127

无符号类型字符 : 0 ~ 255

PS:

类型的最大值+1 -->变成类型的最小值

类型的最小值-1 -->变成类型的最大值

3.实型/浮点型:

单精度 float

1位符号位 +8位指数位+23小数位 (偏移码+127)

能保证6-7位有效位,至少6位(精度)

将一个浮点型数据存放进内存:

1.将浮点型数据转换成二进制指数形式,获取符号位 指数 数据大小

2.float内存最高位存放符号位,紧接着8位存放指数+127的二进制,低23位存放数据的小数位,没错,数据的整数位直接丢弃(因为二进制数据的整数位一定是1,所以可以省略,还原时加上就行)

演示:6.9 存进内存

测试:将 17.625存进内存

双精度 double

1位符号位 + 11位指数位 + 52小数位 (偏移码+1023)

精度范围 能保证15-16位有效数据,至少能保证15位(精度)

判断一个float型变量x是否为0:

#define EP 0.000001

if ( (x<=EP)&&(x>=-EP) )

{ }

Linux C 学习第二天(VIM的基本操作&C语言基本语法)

2018年8月10日:http://vimcdoc.sourceforge.net/doc/help.html