前言:在我看来,书应该越读越薄的,所以我的笔记尽量记录了每一个点,可供复习与查阅,但没有详细的解释。我的C语言的笔记是在谭浩强老师的C程序设计(第五版)的基础上总结归纳的,结合了一些我自己的见解。如果是有其他见解 ,也欢迎大家提出。
1.一个程序由一个或者多个源程序文件组成
(1)预处理指令
(2)全局声明
(3)函数定义
2.函数是c程序的主要组成部分
3.一个函数包含两个部分,声明部分与执行部分
4.程序总是从main函数开始执行
5.在每一个数据声明和语句后都必须有一个分号
1、常量
(1)整型常量(整数)
(2)实型常量(小数)
A.十进制小数
B.指数(12.34e3代表12.34× 1 0 3 10^3 103,e可以用E替代)
(3)字符常量
A.普通字符(‘a’)
B.转义字符(以字符\开头的字符序列)
转义字符 | 字符值 | 输出结果 |
---|---|---|
\’ | 单撇号 | 输出单撇号字符 |
\’’ | 双撇号 | 输出双撇号字符 |
? | 问号 | 输出问号字符 |
\\ | 反斜线 | 输出反斜线字符 |
\a | 警告 | 产生声音或视觉信号 |
\b | 退格 | 将光标当前位置后退一个字符 |
\f | 换页 | 将光标当前位置移到下一页的开头 |
\n | 换行 | 将光标当前位置移到下一行的开头 |
\r | 回车 | 将光标当前位置移到本行的开头 |
\t | 水平制表符 | 将光标当前位置移到下一个Tab的位置 |
\v | 垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\o \oo 或\ooo,其中o代表一个八进制数字 | 与该八进制码对应的ASCII字符 | 与该八进制码对应的字符 |
\xh[h……]其中h代表一个十六进制数字 | 与该十六进制码对应的ASCII字符 | 与该十六进制码对应的字符 |
(4)字符串常量(“abc”)
(5)符号常量
用#define指令 , 指定用一个符号名称代表一个变量.
(#define pi 3.1415)
2.变量
3.常变量
在定义变量时,前面加const.
(const int a)
Ps:常变量与符号常量的区别
A.常变量:有类型,占储存单元.
B.符号常量:无储存单元.
4.标识符
只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线.
组合类型:数组类型和结构体类型
1.整型类型(visual c++的安排,仅供参考)
类型 | 字节数 | 取值范围 |
---|---|---|
int(基本整型) | 4 | − 2 31 -2^{31} −231~( 2 31 2^{31} 231–1) |
unsigned int (无符号基本整型) | 4 | 0 ~( 2 32 2^{32} 232–1) |
short(短整型) | 2 | − 2 15 -2^{15} −215 ~( 2 15 2^{15} 215–1) |
unsigned short (无符号短整型) | 2 | 0~( 2 16 2^{16} 216–1) |
long(长整型) | 4 | − 2 31 -2^{31} −231 ~( 2 31 2^{31} 231–1) |
unsigned long (无符号长整型) | 4 | 0 ~( 2 32 2^{32} 232–1) |
long long(双长整型) | 8 | − 2 63 -2^{63} −263 ~( 2 63 2^{63} 263–1) |
unsigned long long (无符号双长整型) | 8 | 0 ~( 2 64 2^{64} 264–1) |
Ps:对无符号整型数据用“%u”格式输出。%u表示无符号十进制整数的输出。
2.字符型数据
(1)ASCII字符表
(2)字符变量(char c=‘!’)
类型 | 字节数 | 取值范围 |
---|---|---|
signed char(有符号字符型) | 1 | − 2 7 -2^7 −27 ~( 2 7 2^7 27–1) |
unsigned char(无符号字符型) | 1 | 0~( 2 8 2^8 28–1) |
Ps:在使用有符号字符型变量时,允许储存的值为-128至127,但字符代码不可能为负,所以实际上只用到0至 127,其第一位都是0
3.浮点型数据
小数部分占的位数越多,数的有效数字越多,精度越高
指数部分占的位数越多,能表示的数值范围越大
类型 | 字节数 | 有效数字 | 数值范围 |
---|---|---|---|
float | 4 | 6 | 0以及 1.2 × 1 0 − 38 1.2×10^{-38} 1.2×10−38~ 3.4 × 1 0 38 3.4×10^{38} 3.4×1038 |
double | 8 | 15 | 0以及 2.3 × 1 0 − 308 2.3×10^{-308} 2.3×10−308~ 1.7 × 1 0 308 1.7×10^{308} 1.7×10308 |
long double | 8 | 15 | 0以及 2.3 × 1 0 − 308 2.3×10^{-308} 2.3×10−308~ 1.7 × 1 0 308 1.7×10^{308} 1.7×10308 |
16 | 19 | 0以及 3.4 × 1 0 − 4932 3.4×10^{-4932} 3.4×10−4932~ 1.1 × 1 0 4932 1.1×10^{4932} 1.1×104932 |
Ps:如何确定常量的类型(常量也是既有整型也有浮点型)
可以在常量末尾加上专用字符,强制指定常量的类型
(float a=3.14159f)
Ps:A.两个实数相除的结果是双精度实数;两个整数相除的结果是整数
B.%运算符要求参加运算的运算对象是整数结果也是整数。如8%3结果为2
1.自增(++)自减(– –)
++i – –i(在使用i之前,先使i的值加(减)1)
i++ – –i(在使用i之后,使i的值加(减)1)
2.算术表达式和运算符的优先级与结合性
(1)c算术表达式:用算术运算符和括号将运算对象连接起来的、符合c语法规则的式子
(2)优先级:先乘除后加减
(3)结合性:算术运算符—从左到右;赋值运算符—从右到左
3.不同类型数据间的混合运算
(1)加减乘除的两个数有一个为float或double型,结果是double型
因为系统把所有float型转化为double型再进行运算
(2)int型和float或double型数据运算,结果同上
4.强制类型转换运算符
(类型名)(表达式)
如 (double)a
(int)(x+y)
1.控制语句(条件语句、循环语句等)
2.函数调用语句(有函数的 printf(“h”);也是)
3.表达式语句
4.空语句(; 可作流程转向点或循环体)
5.复合语句({ }里面括着的)
1.赋值表达式
变量 赋值运算符 表达式
(如:a=b+c)
2.赋值过程中的类型转换
(1)将浮点型数据(包括单双精度)赋给整型变量时,先对浮点取整再赋
(2)将整型数据赋给单双精度变量时,数值不变,但以浮点数的形式储存
(3)将一个double型数据赋给float变量时,先将双精度转为单精度,即只取6~7位有效数字,储存到float型变量的4个字节中
(4)将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值变量(即发生截断)
3.赋值语句
赋值语句=赋值表达式+;
#include有两种形式:
#include
#include ”stdio.h”
· 如果用户想包含的头文件不是系统提供的相应头文件,而是用户自己编写的文件(这种一般都放在用户的当前目录-----用户存放源文件的子目录里),这时应当用双撇号形式,否则会找不到所需文件
· 凡在程序中要用到数学函数库中的函数,都应当在本文件的开头包含math.h头文件
1.printf(格式控制,输出表列)
printf(“%d%d\n”,a,x)
2.格式字符
(1)d——输出一个有符号的十进制整数
(可以在格式声明中指定域宽(所占的列数),占几个位置,如“%5d”;)
(“%02d”,占两个位置,不足用0补齐)
(2)c——输出一个字符
(也可指定域宽,同上)
(如果一个整数范围在0~127之间,也可用%c;如果一个整数较大,则把它最后一个字节的信息以字符形式输出)
(3)s——输出一个字符串
(4)f——以小数形式输出实数,
(基本型,用%f,将会整数全部输出,小数部分输出6位)
(指定数据宽度和小数位数,用%m.nf)
(输出数据向左对齐,用%-m.nf)
(5)e/E——以指数形式输出实数
(6)i——同d
(7)o——以八进制整数形式输出
(可以得到存储单元中的实际存储情况)
(8)x/X——以十六进制整数形式输出
(9)u——用来输出无符号型数据,以十进制整数形式输出
(10)g/G——用来输出浮点数,系统自动选择f格式或e格式输出其中长度较短的,不输出无意义的0
Ps:l——输入长整型数据(%ld,%lx,%lo,%lu)double型(%lf,%le)(双长整型加两个l)
h——输入短整型数据(%hd,%ho,%hx)
scanf(格式控制,地址表列)
scanf(“a=%f,b=%f,c=%f”,&a,&b,&c)
·在用“%c”格式声明输入数据时,空格字符和转义字符都作为有效字符输入
·在输入数据时应在对应位置上输入与这些字符相同的字符
(scanf(“a=%f,b=%f,c=%f”,&a,&b,&c)
(应输入a=1,b=2,c=3而不是1 2 3且中间一定要用逗号而不是空格)
·在输入数值数据时,如输入空格,回车,tab键或遇到非法字符(不属于数值的字符),则认为该数据结束
1.putchar()——输出一个字符
2.getchar()——输入一个字符
(用getchar函数得到的字符可以赋给一个字符变量或整形变量,也可以不赋,而作为表达式的一部分)
(putchar(getchar())//将接收到的字符输出)