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     练习命令模式

vsp 文件名             水平分屏并打开一个文件
sp 文件名               垂直分屏并打开一个文件
分屏后的操作如下:
Ctrl+W:切换分屏;对两个或两个以上分屏同时操作时,在一个屏幕的操作下需要加 -a 

编译器: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/6801956

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) )
{ }


猜你喜欢

转载自blog.csdn.net/nan_lei/article/details/80989118
今日推荐