目录
补充:vi编辑常用快捷指令
1、yy + p :复制
Nyy + Mp :N和M表示数字,Nyy 表示复制从光标开始N行内容,Mp表示复制M份
2、dd :删除
Ndd :N表示数字,删除光标所在行开始的N行内容
3、dd + p :剪切
4、Shift + v :选中,配合方向键进行操作
5、u :撤销 ctrl + r :反撤销
C语言基础学习(一)
一、常量和变量
常量 "在程序运行过程中", 不能改变的量。
变量 "在程序运行过程中", 能被改变的量 。
变量名(标识符)规则:
①.数字、字母、下划线组成
②.开头不能是数字
③.不能与关键字重名
④.不要和预处理命令及库函数名重名
例:
int a_1; -----合法
int 1_a; --:---名字不合法
二、基础数据类型
整型、字符型、浮点型、构造数据类型、指针类型、空类型
1、整型
①整型常量(3种):
123 ----->十进制的整型常量
0x123 ----->十六进制的整型常量
0123 ----->八进制的整型常量
进制间的转换:
十进制 ===> 二进制 方法: 除2取余法(辗转相除法)
例:将十进制数123转变为二进制数
2|123
2|61 ... 1 (低位)
2|30 ... 1
2|15 ... 0
2|7 ... 1
2|3 ... 1
2|1 ... 1
2|0 ... 1 (高位)结果:1111011(2)
二进制 ===> 十进制 方法:加权求和
例:将二进制数1111011转变为十进制数
64 32 16 8 4 2 1
2的平方 : 2^6 2^5 2^4 2^3 2^2 2^1 2^0
二进制: 1 1 1 1 0 1 1
结果:123(10)
二进制 ===> 八进制
0 1 2 3 4 5 6 7
0 1 10 11 100 101 110 111对应关系:1位八进制数对应3位二进制数
二进制 => 十六进制
对应关系:1位十六进制进制数 对应 4位 二进制数
②整型变量(8种):
int 4字节
short 2字节
long 8字节
long long 8字节
unsigned / signed
注:sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数,运算数 可以是一个 类型名。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 printf("szieo(int)=%ld\n",sizeof(int));
6 printf("szieo(short)=%ld\n",sizeof(short));
7 printf("szieo(long)=%ld\n",sizeof(long));
8 printf("szieo(long)=%ld\n",sizeof(long long));
9
10 return 0;
11 }
运行结果:
③变量给值
int a = 10; //定义的同时给值 初始化
int a;
a = 10; //赋值
变量之所以能变 --- 变量实际上对应是一块可以被修改的空间
小端:高高低低
高位数据 存在 高地址(地址编号大) 处
低位数据 存在 低地址 处
x86 体系结构 --- 小端模式
51 单片机 ---大端模式
④整型数据的存储
整数:计算机最终存储的都是他们的补码形式
正数:原码 反码 补码 都是一样的
负数:反码 + 1
例:123
0111 1011 //原码
0111 1011 //反码
0111 1011 //补码
例:-7
1|000 0000 0000 0000 0000 0000 0000 0111 //原码1|111 1111 1111 1111 1111 1111 1111 1000 //反码
1|111 1111 1111 1111 1111 1111 1111 1001 //补码
十六进制:f f f f f f f 9
(负数的反码是原码的符号位不变 其余位按位取反 )
⑤整型类型取值范围
int 4字节
unsigned int 0~2^32-1
signed int -2^31 ~ 2^31- 1
short 2字节
unsigned short 0~2^16-1 //65535
signed short -32768 ~ 32767
long 8字节
long long 8字节
⑥整数的溢出
整数 存储 和 使用 分开的
unsigned short a = 65535; //1111 1111 1111 1111
unsigned short b = -65535;
1 1111 1111 1111 1111
1 0000 0000 0000 0001
2、浮点型
①常量形式
1.23
1.23e-4 //科学计数法形式 1.23 * 10^-4
1.23E-4
②浮点型变量
float 4字节
double 8字节
long double 16字节
③浮点型的比较
代码中出现的变量或常量 一定有其对应的数据类型
代码中出现的 浮点型常量 默认识别为 double 类型
0.9 * 2 = 1.8 --- 1
0.8 * 2 = 1.6 --- 1
0.6 * 2 = 1.2 --- 1
0.2 * 2 = 0.4 --- 0
0.4 * 2 = 0.8 --- 0
0.8 * 2 = 1.6 --- 1
....
1.1101 ... * 2 ^ n
float
1位 符号位|8位 指数位 |23位 尾数位
+127
double
1位 符号位|11位 指数位 |52位 尾数位
+1023
浮点数的比较:保证精度一致、类型一致
常量也可以指定类型:
0.9f //表示被识别为 float类型
123 //默认识别为 int类型
123L //识别为long类型
123LU //unsigned long
123LL //long long
123LLU //unsigned long long
3、字符型
①字符型常量
'a' //字符常量 a这个常量
②字符型变量
char 1个字节
③应用
0~32 控制字符(不可见字符)
48~57 数字字符 '0' ~ '9'
65 ~90 英文的26个大写 字母的符号
97 ~122 英文的26个小写 字母的符号
char ch = '1';
printf("%d\n",ch - 48); //数值1
printf("%d\n",ch - '0'); //数值1
大写 转 小写 +32
练习: 请编译程序将“China ”译成密码,用原来字母后面的第4个字母代替原来的字母。例如:字母A后面的第四个字母是E,用E代替A。因此"China"应译为"Glmre"。请编一道程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量分别为'C','h','i','n','a',经过运算,使c1,c2,c3,c4,c5分别为'G','l','m','r','e',然后输出。
1 #include<stdio.h>
2
3 int main(void)
4 {
5 char m1 = 'C';
6 char m2 = 'h';
7 char m3 = 'i';
8 char m4 = 'n';
9 char m5 = 'a';
10
11 printf("%c%c%c%c%c\n",m1+4,m2+4,m3+4,m4+4,m5+4);
12 }