c语言笔记
c语言:
c语言的源代码文件是一个普通的文本文件,但扩展名必须是.c
c语言三十二个关键字:
1、auto 声明自动变量
2、short 声明短整型变量或函数
3、int 声明整型变量或函数
4、long 声明长整型变量或函数
5、float 声明浮点型变量或函数
6、double 声明双精度变量或函数
7、char 声明字符型变量或函数
8、struct 声明结构体变量或函数
9、union 声明共用数据类型
10、enum 声明枚举类型
11、typedef 用以给数据类型取别名
12、const 声明只读变量
13、unsigned 声明无符号类型变量或函数
14、signed 声明有符号类型变量或函数
15、extern 声明变量是在其他文件正声明
16、register 声明寄存器变量
17、static 声明静态变量
18、volatile 说明变量在程序执行中可被隐含地改变
19、void 声明函数无返回值或无参数,声明无类型指针
20、else 条件语句否定分支(与 if 连用)
21、switch 用于开关语句
22、case 开关语句分支
23、for 一种循环语句
24、do 循环语句的循环体
25、while 循环语句的循环条件
26、goto 无条件跳转语句
27、continue 结束当前循环,开始下一轮循环
28、break 跳出当前循环
29、default 开关语句中的“其他”分支
30、sizeof 计算数据类型长度
31、return 子程序返回语句(可以带参数,也可不带参数)循环条件
32、if 条件语句
break:直接跳出
continue:结束本次循环
1 数据类型的定义:
变量的定义:
数据类型 变量名 【标识符】
变量的赋值:
变量名 = 值;
数据类型 变量名 【标识符】 = 值
标识符的命名规则:
1.字母,数字,下划线
2.不能以数字开头
3.见名知意
4.不能和同一函数内的其他标识符重复
5.不能使用c语言关键字
6.区分大小写
常量定义:
1.const 数据类型 常量名
2.#define 常量名 值
注意:
1.通过#define定义的常量是根据值来匹配数据类型的
2.const修饰的常量是不安全的 可以通过指针来修改
2.进制:
二进制:
二进制逢二进一,所有的数字是0,1组成的
十进制转二进制:
除二反序取余法
1除2余1
二进制转化为十进制:
全执法:将二进制各个位数乘以二的N次幂(从零开始)得到的结果相加
1987 = 11111000011=1*2^0+1*2^1+0*2^2+0*2^3+0*2^4+0*2^5+1*2^6+1*2^7+1*2^8+1*2^9+1*2^10
八进制二进制的相互转换:
八进制逢八进一,所有的数组是0到7组成
十进制转八进制:
除八反序取余法:将十进制每次除以8取出余数 按照结果倒叙排序
例如:1987除8为248余3
248除8为31余0
31除8为3余7
3除8 取3
十进制1987转化八进制为3703
八进制转化为十进制与二进制类似(乘8的N次幂,从零开始,得到的结果相加)
八进制转化为二进制:
八四二一法则
参照表:八进制 二进制
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
将二进制的每一位用相对应的8,4,2,1来表示
1位数 是该数本身
2位数 是2+1
3位数 如果都有值是4+2+1
十进制转化为十六进制:
除十六反序取余法:将十进制每次除以16取出余数 按照结果倒叙
1987除以16为124余3
124除以16为7余12
7不够被16整除取7本身
十进制1987转化为十六进制为7c3
十六进制转化为十进制:
7c3
第零位:3*16^0=3
第一位:c*16^1=192
第二位:7*16^2=1792
1792+192+3=1987
十六进制转化为二进制:
7c3
0111 1100 0011
二进制转化为十六进制:
4位一嗝
十六进制转化为八进制:
十六进制:7c3
0111 1100 0011
011 111 000 011
八进制:3703
八进制转化为十六进制;
八进制:3703
011 111 000 011
0111 1100 0011
十六进制:7c3
进制在程序中打印:
int a=10;//十进制中的10
int b=010;//八进制中的10(在程序中定义一个八进制数,需要在数前面加上一个0(零)区分)
int c=0x10;//十六进制中的10(在程序中定义一个十六进制数,需要在数的前面加上0x或0X区分)
int d=0X10;//十六进制中的10(一个小写的a,一个大写的A)
注意:在程序中没有办法表示一个二进制数
%d将数据按照十进制输出
%o将数据按照八进制输出
%x将数据按照十六进制小写输出
%X将数据按照十六进制大写输出
源码反码补码和sizeof:
1986
数据在计算机中主要是以补码形式存在
bit(比特):一个二进制代表一位,一位只能代表0或1两种状态,数据传输是习惯以位(bit)为单位
Byte(字节):一个字节为8个二进制,称为8位,计算机中储存的最小单位为字节。数据传输是习惯以位(bit)为单位。
一个有符号的整型数据可以分为两部分 一部分是符号位 一部分是数字位
对于正数,原码,反码,补码相同
对于负数,其补码位它的反码加1
补码符号位不动,其他位求反,最后整个数加1,得到补码
1986原码:0000 0000 0000 0000 0000 0111 1100 0010
-1986原码:1000 0000 0000 0000 0000 0111 1100 0010
1986反码:0000 0000 0000 0000 0000 0111 1100 0010
-1986反码:1111 1111 1111 1111 1111 1000 0011 1101
1986补码:0000 0000 0000 0000 0000 0111 1100 0010
-1986补码:1111 1111 1111 1111 1111 1000 0011 1110
溢出:在数据进行操作的时候会导致超出数据类型大小,会向前位进1,多于原始数据类型大小,会被系统自动舍弃,保留从后面开始数据类型大小的位数
4.(sizeof)
求数据类型在内存中占的大小(byte)
int value =sizeof(变量名)
int value =sizeof(数据类型)也可以写为sizeof空格 数据类型
注意前提:根据32位系统得到的类型
char(字符型)【1】<short(短整型)【2】<=int(整型)【4】|float(浮点型)【4】|long(长整型)【4】<long long(长长整型)【8】|double(双精度浮点型)【8】