@[TOC](文章目录)
目录
目录
前言
本篇是针对网上学习C语言的阶段性总结二
一、基础篇(遣词造句)
1.存储
冯·诺依曼 被称为现代计算机之父 ,他提出了两个重要设想:存储程序、采用二进制。
在计算机内存中,存储信息的是存储元件,存储元件通过电信号的高低电频来表示数据,高电频表示1,低电频表示0,一个存储元件仅仅能保存一个0或1的信息。
存储元件的单位是bit,简称b,八个bit可组成一个字节Byte,简称B,及八个二进制位等于一个字节。一个字节可表示0~255中的任意数。
单位换算。在计算机中:
1KB=1024B=2^10B
1MB=1024KB=2^20B
1GB=1024MB=2^30B
1TB=1024GB=2^40B
1PB=1024TB=2^50B
2.进制转换
简单的进制转换:
十进制 | 二进制 | 八进制 | 十六进制 |
0 | 0000 | 0 | 0 |
1 | 0001 | 1 | 1 |
2 | 0010 | 2 | 2 |
3 | 0011 | 3 | 3 |
4 | 0100 | 4 | 4 |
5 | 0101 | 5 | 5 |
6 | 0110 | 6 | 6 |
7 | 0111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
十六进制表示方法:在数字前加0x。例如:0x12B3
八进制表示方法:在数字前加0。例如:08455
3.数据类型分类
不同的数据类型可以决定数据的取值范围,数据所占用内存的字节数,以及可以对数据进行的操作。
数据类型的分类 :
数据类型 | 基本类型 | 整型类型 | 基本整型int |
长整型 long int | |||
短整型 short int | |||
字符类型 | 字符型 char | ||
浮点类型 | 单精度浮点型float | ||
双精度浮点型double | |||
空类型void | / | ||
指针类型* | / | ||
构造类型 | 数组类型[ ] | ||
结构体类型 | |||
共用体类型 | |||
枚举类型 |
·整形类型
整型数据类型 | 缺省形式的整型数据类型 | 名称 | 字节数 | 取值范围 |
[signed] int | int | 整型 | 4 | -2^31 ~2^31-1 |
unsigned int | unsigned int | 无符号整型 | 4 | 0~2^32-1 |
[signed] short [int] | short | 短整型 | 2 | -2^15~2^15-1 |
unsigned short [int] | unsigned short | 无符号短整型 | 2 | 0~2^16-1 |
[signed] long [int] | long | 长整型 | 4 | -2^31~2^31-1 |
unsigned long [int] | unsigned long | 无符号长整型 | 4 | 0~2^32-1 |
<1>只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
<2>对无符号整型数据用“%u”格式输出。%u表示用无符号十进制数的格式输出。
<3>%d 十进制整数
%ld 十进制长整数
·浮点型类型
浮点型即实型,表示小数
3.14159*10^0=3141.59*10^(-3),由于小数点位置可以浮动,所以实数的指数形式称为浮点数。
浮点型数据类型 | 名称 | 字节数 | 有效数字 | 数值范围 |
float | 单精度浮点型 | 4 | 6 | 0,以及1.2*10^-38~3.4*10^38 |
double | 双精度浮点型 | 8 | 15 | 0,以及2.3*10^-308~1.7*10^308 |
long double | 长双精度浮点型 (不同平台下,所占字节数不同) | 8 | 15 | 0,以及2.3*10^-308~1.7*10^308 |
16 | 19 | 0,以及3.4*10^-4932~1.1*10^4932 |
两种表示方法:
<1>十进制小数形式:由数字和小数点组成。例如:3.14 ,4. , .4
<2>指数形式:“十进制小数或整数”+“e(E)”+“十进制整数”,e(E)的两边必须有数,不能省略。
浮点型变量也可用printf()函数输出,与整型变量不同的是:float的格式说明项为“%f”,double的格式说明项为“%lf”。
·字符类型
类型 | 名称 | 字节数 | 取值范围 |
[signed] char | 有符号字符型 | 1 | -128~+127 |
unsigned char | 无符号字符型 | 1 | 0~+255 |
字符类型保存的是ASCII码表中的字符。输出时用格式控制符%c
ASCII字符集包括:
·字母(区分大小写)
·数字(0~9)
·专门符号(29个)
·空格符:空格、水平制表符(tab)、垂直制表符、换行、换页(form feed)
·不能显示的字符:空(null)字符(以'\0'表示)、警告(‘\a’)、退格('\b')、回车('\r')
ASCII码 | 控制字符 |
32 | (space) |
48 | 0 |
65 | A |
97 | a |
转义字符 | 含义 | ASCII码 |
\a | 报警响铃 | 7 |
\b | 退格符(backspace) | 8 |
\t | 水平制表(tab) | 9 |
\n | 回车换行 | 10 |
\v | 垂直制表 | 11 |
\f | 换页 | 12 |
\r | 回车不换行 | 13 |
\" | 双引号 | 34 |
\' | 单引号 | 39 |
\\ | 反斜杠“\” | 92 |
\ddd | 1~3位八进制数所代表的字符 | |
\xhh | 1~2位十六进制数所代表的字符 |
4.标识符与关键字
·标识符
标识符有效字符序列,是一个对象的名字。用于标识用户自己定义的变量、符号常量、函数名、数组名、类型名等
命名规则:
·不能是关键字
·只能由字母、数字和下划线组成,且区分字母大小写
·名称的第一个字符必须是字母或下划线,不能是数字
·名称中间不能有空格
·标识符可以为任意长度,但最好不要超过31个字符
·不要与C语言库函数名称相同
匈牙利名称法:每个单词的第一个字母大写。 例如学生姓名变量可使用标识符 StudentName
·关键字(又叫保留字)
ANSI C(标准C)中有32个关键字:
控制语句关键字(12个) | 循环语句 | for | 一种循环语句 |
do | 循环语句的循环体 | ||
while | 循环语句的循环条件 | ||
break | 跳出当前循环 | ||
continue | 结束当前循环,开始下一轮循环 | ||
条件语句 | if | 条件语句 | |
else | 条件语句否定分支(与if连用) | ||
goto | 无条件跳转语句 | ||
开关语句 | switch | 用于开关语句 | |
case | 开关语句分支 | ||
default | 开关语句中的“其他”分支 | ||
返回语句 | return | 子程序返回语句(可带参数,也可不带) | |
数据类型关键字(12个) | int | 声明整型变量或函数 | |
char | 声明字符型变量或函数 | ||
float | 声明浮点型变量或函数 | ||
double | 声明双精度变量或函数 | ||
long | 声明长整型变量或函数 | ||
short | 声明短整型变量或函数 | ||
signed | 声明有符号类型变量或函数 | ||
unsigned | 声明无符号类型变量或函数 | ||
struct | 声明结构体变量或函数 | ||
union | 声明共用体(联合)数据类型 | ||
void | 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用) | ||
enum | 声明枚举类型 | ||
存储类型关键字(4个) | auto | 声明自动变量 一般不使用 | |
extern | 声明变量是在其他文件正声明(也可以看做是引用变量) | ||
register | 声明积存器变量 | ||
static | 声明静态变量 | ||
其它关键字(4个) | const | 声明只读变量 | |
sizeof | 计算数据类型长度 | ||
typedef | 用以给数据类型取别名 | ||
volatile | 说明变量在程序执行中可被隐含地改变 |
5.运算符和表达式
运算符:表示某种运算功能的符号
算术运算符 | + - * / % ++ -- |
关系运算符 | > < == >= <= != |
逻辑运算符 | ! && || |
位运算符 | << >> ~ | ^ & |
赋值运算符 | =及其扩展赋值运算符 |
条件运算符 | ?: |
逗号运算符 | , |
指针运算符 | * & |
求字节数运算符 | sizeof |
强制类型转换运算符 | (类型) |
成员运算符 | . -> |
下标运算符 | [ ] |
其他运算符 | 如函数调用运算符() |
表达式:由操作数(变量和常量)和运算符组成的序列
根据运算符所涉及的操作数的个数,分为:单目运算符,双目运算符和三目运算符
不同运算符具有不同的优先级(运算的先后顺序)和结合性(优先级相同时运算的结合方向)
结合性:除单目运算符,赋值运算符,条件运算符是右结合性之外,其他的都为左结合性
优先级:单目运算符高于双目运算符,双目运算符高于三目运算符,三目运算符高于赋值运算符
双目运算符中的10个优先级:算术运算符>移位运算符>关系运算符>位逻辑运算符(不包括单目位逻辑运算符)>逻辑运算符
也可通过在表达式中强行加入圆括号来改变优先级和结合性
·算术表达式
优先级:()>*、 / 、%>+ 、 -
使用算数运算符和括号将运算量连接起来的式子
%(求余运算符)要求参加运算的运算对象为整数,结果也是整数
/ (除号运算符)两个实数相除的结果是双精度实数,两个整数相除的结果为整数
类型不同的数进行运算,其结果按优先级高的类型定
自增自减
++i,--i 在使用i之前,先使i的值加/减1,先增减、后运算
i++,i-- 在使用i之后,使i的值加/减1,先运算、后增减
结合性:自右向左
·关系表达式
用关系运算符连接的两个表达式构成。当比较结果成立,结果为1;否则,结果为0。
参与关系运算的两个运算量可以是任意类型的数据
优先级:<,<=,>,>=高于==,!=
·逻辑表达式
用逻辑运算符连接的两个表达式构成。参与逻辑运算的操作数叫逻辑量
优先级:!>&&>||
运算符 | 含义 | 举例 | 结果(非零当作真,零作为假) |
! | 逻辑“非”(真的非为假;假的非为真) | !3 | 0 |
&& | 逻辑“与”(一假则假) | 3&&0 | 0 |
|| | 逻辑“或”(一真则真) | 3||0 | 1 |
·位表达式
对整型数据进行的运算,而且符号位需要参与运算
·赋值表达式
由赋值运算符连接左边一个变量和右边一个表达式构成
优先级:!>算术>关系>&&>||>赋值
表达式计算结果的数据类型应当和变量的数据类型相同
复合赋值运算符
复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的
优先级:与=是同一优先级
结合性:自右向左
复合赋值运算的一般格式为:表达式1 op=表达式2 a+=b-1
它等价于:表达式1=表达式1 op(表达式2 ) a=a+(b-1)
·逗号表达式
将几个表达式隔开并以此计算
[表达式1], [表达式2] ,...[表达式n]
优先级:最低
结合性:自左向右
整个表达式的值:最后一个表达式的值
·条件运算符与表达式
实质:起程序控制作用 表达式1 ? 表达式2 : 表达式3
优先级:逻辑>t条件>赋值
结合性:自右向左
求值规则:若表达式1成立,则表达式2的值作为整个条件表达式的值;
若表达式1不成立,则表达式3的值作为整个条件表达式的值
·求字节数
sizeof()运算符是一个单目运算符,用于计算一个某种类型的运算量所占用的字节数
使用:
sizeof(类型标识)
sizeof(变量名) ;或 sizeof 变量名
·类型转换
类型转换 | 自动类型转换 | 赋值转换 |
运算转换 | ||
强制类型转换 | / |
赋值转换
·浮点型赋值给整型,结果保留整数部分
·整数赋值给浮点数,结果以浮点数的方式存在
·字符型赋值给整型,数值不变,但以整型的方式存储,内存空间变大
·整型赋值给字符型,只把整型变量低8位赋值给字符型变量
·双精度浮点数赋值给单精度浮点数,有效位减少,舍弃的部分四舍五入
运算转换
·由数值存储位少的向多的转换
·浮点数运算都是按照双精度进行的,float类型的变量会先转换成double类型再进行计算
总结
学过的知识要反复读背,才能够更好的记住~