iOS学习(C语言)知识点整理笔记
1、C语言32个关键字
一、存储相关
1)auto 声明自动变量
2)register 声明寄存器变量
3)volatile 声明的变量在程序执行过程中可能被隐含的改变
4)const 声明只读变量
5)extern 声明变量是在其他文件中声明
6)static 声明静态变量
7)signed 声明有符号类型变量或函数
8)unsigned 声明无符号类型的变量或函数
二、数据类型
1)short 声明短整型变量或函数
2)int 声明整型变量或函数
3)long 声明长整型变量或函数
4)float 声明浮点型变量或函数
5)double 声明双精度变量或函数
6)char 声明字符型变量或函数
7)struct 声明结构体变量或函数
8) union 声明公用数据类型
9) enum 声明枚举类型
10)void 声明函数无返回值或无参数 声明无类型指针
三、逻辑控制
1)if 条件判断语句
2)else 条件语句否定分支(与 if 连用)
3)for 循环语句的一种
4)do 循环语句的循环体
5)while 循环语句的条件判断部分
6)break 结束循环 或者关闭switch语句中的其他分支
7)continue 结束当前循环 开始下一轮循环
8)return 子程序返回语句 (可以带参数,也可不带参数) 循环条件
9)default 开关语句中的其他条件分支
10)switch 开关语句
11)case 开关语句分支
12)goto 无条件跳转语句
四、特殊用途
1)sizeof 计算数据类型长度
2)typedef 用于给数据类型取别名
2、进制
1)二进制 2个基本状态(0和1) 逢二进一 权值 2^(n-1) 标示符 0b (如:0b1111=15)
2)八进制 8个基本状态(0~7)逢八进一 权值 8^(n-1) 标示符 0(如:0100=64)
3)十进制 10个基本状态(0~9)逢十进一 权值 10^(n-1)
4)十六进制 16个基本状态 (0~9,a~f) 逢十六进一 16^(n-1) 标示符 0x(如:0x111=273)
5)二进制转八进制 每3bits压缩 八进制转二进制 一位拉伸成3bits (如:0126=0b001,010,110=64+16+4+2=86)
6)二进制转十六进制 每4bits压缩 十六进制转二进制一位拉伸成4bits (如:0x56=0b0101,0110=64+16+4+2=86)
7)八进制和十六进制是二进制的辅助进制 进制转化的顺序
10->(除16取余)16->(4bits拉伸)2->(3bits压缩)8
8->(3bits拉伸)2->(4bits压缩)16->(权值相加)10
8)0~15的二进制数
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
10=1010
11=1011
12=1100
13=1101
14=1110
15=1111
3、三码
1)三码分为 原码、反码、补码
2)原码 有符号数,最高位为符号位,后面是数据位 负数的符号位是1 正数的符号位是0
假定用8bits来表示一个有符号数 则第一位数位符号数 后七位为数值 例如:(9+(-6))
9的原码:0000,1001
-6的原码: 1000, 0110
_________________________________________________________________________________
1000,1111(原码相加的结果: -15 结果错误[9+负6=3] 即原码不能参与运算)
3)反码 正数的反码等于原码 (正数:反码=原码)负数的反码为符号位不变 原码其他位取反
例如:(9+(-6)) 二进制相加 逢二进一
9的原码:0000,1001 反码:0000,1001
-6的原码:1000,0110 反码:1111,1001
______________________________________________________________________________________
0000,0010(反码相加的结果: 2 结果错误[9+负6=3] 即反码不能参与运算)
4)补码 正数的补码等于原码(正数 补码=原码) 负数的补码等于反码加一(负数 补码=反码+1)
例如:(9+(-6)) 二进制相加 逢二进一
9的原码:0000,1001 反码:0000,1001 补码:0000,1001
-6的原码:1000,0110 反码:1111,1001 补码:1111,1010
________________________________________________________________________________________
0000,0011(补码相加的结果为3 结果正确 即补码可以参与运算)
5)8bits表述一个有符号数 0000,0000~1111,1111 共有256种变化
正数:0000,0000~0111,1111(补码 0~127)0x7f
负数: 1000,0000~1111,1111(补码)(-128~-1)
-1=1111,1111(补码)-1111,1110(反码)-1000,0001(原码)
-127=1111,1111(原码),-1000,0000(反码), -1000,0001(补码)
-128=1000,0000(补码 ,1111,1111(反码),1000,0000( 原码)
6)8bits表述一个无符号数:0~255
7)计算机中的存储
一位二进制=1bit 一个字节1Byte=8bits
1Kb=1024Bytes
1Mb=1024Kb
1Gb=1024Mb
1Tb=1024Gb
200Gb=200*1024*1024*1024Bytes
8)程序员节:每年的第2 ^8天 (0b1111,1111) 即:闰年的9月12日 平年的9月13日
9)带空格输入并输出技巧 char str[]={};scanf("%[^\n]",str);printf("%s\n",str); "%[^\n]"表示读取到"\n"截止。
10) 各数据类型在不同位数系统中所占的字节长度
整型 char short int long long long
64位系统 1字节 2字节 4字节 8字节 8字节 (Mac系统)
32位系统 1字节 2字节 4字节 4字节 8字节 (以前的嵌入式开发环境 arm 、dsp)
16位系统 1字节 2字节 2字节 2字节 4字节 (单片机之类的小硬件)
可通过 sizeof() 函数验证 例如:sizeof(int)
11) 各种数据类型表示数的范围
char 1字节,8bits,
有符号数:-128~127, -2^7~2^7-1
无符号数0~255(0~0xff) 0~2^8-1
short 2字节,16bits
有符号数:-32768~32767, -2^15~2^15-1
无符号数:0~65535,0~2^16-1
int 4字节,32bits
有符号数:-2^31~2^31-1
无符号数:0~2^32-1
long 8字节,64bits
有符号数: -2^63~2^63-1
无符号数: 0~2^64-1
long long 8字节,64bits
有符号数: -2^63~2^63-1
无符号数: 0~2^64-1
float 浮点型,4字节
double 双精度浮点型,8字节
long double 长双精度浮点型,16字节
12)常用的几个ASCII 码对照值
A~Z (65~90) a~z(97~122)
del= 127 @=64 \n=10 \r=13