C基础
一、计算机结构
1、组成
输入输出设备:
CPU:
存储器:内存 外存储器 寄存器
主存储器即内存。程序中待处理的数据和处理的结果都存储在内存中。
外存储器是用来长期保存数据的大容量存储器。
寄存器是CPU内部的高速存储器,速度快,数目少。
2、程序
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。
3、程序设计步骤
编辑 -> 编译、链接 -> 执行、调试
4、计算机数据表示
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据
1> 数值数据表示
二进制 十进制 八进制 十六进制
其他进制转二进制
十进制 -> 二进制
原则:除2倒取余,直到商为0
eg:
56 --> 111000
八进制 --> 二进制
0 ------- 000
1 ------- 001
2 ------- 010
3 ------- 011
4 ------- 100
5 ------- 101
6 ------- 110
7 ------- 111
原则:一位划三位
eg:
067 --> 110 111
十六进制 --> 二进制
0 ------- 0000
1 ------- 0001
2 ------- 0010
3 ------- 0011
4 ------- 0100
5 ------- 0101
6 ------- 0110
7 ------- 0111
8 ------- 1000
9 ------- 1001
a ------- 1010
b ------- 1011
c ------- 1100
d ------- 1101
e ------- 1110
f ------- 1111
原则:一位划四位
eg:
0xaf --> 1010 1111
二进制转其他进制
二进制 -> 十进制
eg:
111000 -> 0*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 + 1*2^5 = 56
二进制 -> 八进制 (三位划一位)
eg:
110 111 -> 067
二进制 -> 十六进制 (四位划一位)
eg:
1010 1111 -> 0xaf
十进制 --> 八进制 (十进制->二进制->八进制)
eg:
67 --> 103
十进制 -> 十六进制(十进制->二进制->十六进制)
eg:
67 --> 0x43
八进制 -> 十六进制
eg:
103 -> 0x43
练习:
二进制: 1011010 10111110001
1011010
八进制: 0132
十六进制:0x5a
十进制:1*2^6 + 1*2^4 + 1*2^3 + 1*2^1 = 90
10111110001
八进制: 02761
十六进制:0x5f1
十进制:1521
十六进制 -> 十进制: 0xa6f 0xb8e
0xa6f --> 2671
0xb8e --> 2958
2> 字符数据
以ASCII值存储;
字符 ASCII值
'0' 48
'a' 97
'A' 65
' ' 32
'\0' 0
eg:
char ch = 'A'+3;
printf("ch=%d\n",ch); // ch = 68
printf("ch=%c\n",ch); // ch = D
二、词法符号
1、关键字(32个) 32bit 系统
1byte = 8bit
存储类型:auto(自动存储) static(静态存储) register(寄存器存储) extern(声明一个外部的全局变量)
eg:
int a;// auto int a;
static int b;
register int c;
数据类型:unsigned signed int(4byte) short(2byte) long(4byte) char(1byte) float(4byte) double(8byte)
enum(枚举) struct union void
void :1.表示函数无返回值 2.修饰指针表示指针指向不确定的数据类型
控制语句:if else switch case default break continue for do while goto
其他:return sizeof(数据类型或变量) const typedef volatile(有可能被隐含的改变)
eg:
int i;
sizeof(i); //4byte
sizeof(int)//4byte
注意:
所有关键字均为小写
2、标识符
程序员按照命名规则自行定义的词法符号;
C的命名规则:
1> 必须由一个或多个字母、数字、下划线组成;
2> 不能以数字开头
3> 不能与关键字重名
eg:
x(√) y(√) sum(√) a100(√) _A7b_3x(√)
3’a(×) x*y(×) @(×) b.8(×) while(×)
3> 运算符
算数运算符(+ - * / % ++ --)
关系运算符( > < >= <= == !=)
逻辑运算符 (&& || ! )
位运算符(& | ~ << >> ^)
赋值运算符( = += -= *= %= >>= <<= ^= )
地址运算符:(&)
逗号运算符:(表达式1,表达式2,...,表达式n)
sizeof(变量或数据类型) //求数据类型或者是变量所占内存的字节数
三目运算符(表达式1?表达式2:表达式3)
4>分隔符
空格符‘ ’、制表符‘\t’、换行符'\n'、注释'//、/*...*/'。
5>标点符号
逗号,分号,冒号,花括号,圆括号;