C基础班讲义v10.docx
- 文档编号:5918613
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:23
- 大小:158.99KB
C基础班讲义v10.docx
《C基础班讲义v10.docx》由会员分享,可在线阅读,更多相关《C基础班讲义v10.docx(23页珍藏版)》请在冰豆网上搜索。
C基础班讲义v10
C基础班讲义
目录
1第一个c语言的helloworld7
1.1include头文件包含7
1.2main函数7
1.3注释7
1.4{}括号和代码块7
1.5声明7
1.6C语言自定义名字的要求7
1.7return语句8
2C语言的编译8
2.1编译过程8
2.2gcc编译选项8
2.3printf执行原理9
2.4CPU32位64位简介10
3C语言中的数据类型11
3.1常量11
3.1.1#define11
3.1.2const12
3.2字符串常量12
3.3位,字节,字12
3.3.1位12
3.3.2二进制12
3.3.3十进制12
3.3.4八进制13
3.3.5十六进制13
3.3.6字节13
3.4sizeof关键字13
3.5十进制,二进制,八进制,十六进制14
3.6int类型14
3.6.1int常量,变量14
3.6.2printf输出int值16
3.6.3printf输出八进制和十六进制16
3.6.4short,long,longlong,unsignedint16
3.6.5整数溢出16
3.7char类型17
3.7.1char常量,变量17
3.7.2printf输出char17
3.7.3不可打印char转义符17
3.7.4char和unsignedchar18
3.8浮点float,double,longdouble类型18
3.8.1浮点常量,变量18
3.8.2printf输出浮点数18
3.9类型限定18
3.9.1const18
3.9.2volatile18
3.9.3register19
4字符串格式化输出和输入19
4.1字符串在计算机内部的存储方式19
4.2printf函数,putchar函数19
4.3scanf函数与getchar函数20
5运算符表达式和语句21
5.1基本运算符21
5.1.1=21
5.1.2+21
5.1.3–21
5.1.4*21
5.1.521
5.1.6%21
5.1.7+=21
5.1.8-=21
5.1.9*=22
5.1.10=22
5.1.11%=22
5.1.12++22
5.1.13--22
5.1.14逗号运算符22
5.1.15运算符优先级22
5.2复合语句23
5.3类型转化23
6条件分支语句23
6.1关系运算符23
6.1.1<23
6.1.2<=23
6.1.3>23
6.1.4>=24
6.1.5==24
6.1.6!
=24
6.2关系运算符优先级24
6.3逻辑运算符24
6.3.1&&24
6.3.2||25
6.3.3!
25
6.4if26
6.5ifelse27
6.6ifelseif27
6.7switch与break,default27
6.8条件运算符?
27
6.9goto语句与标号27
7循环语句27
7.1while27
7.2continue27
7.3break28
7.4dowhile28
7.5for28
7.6循环嵌套28
8整数在计算机内部的存储方式28
8.1原码28
8.2反码29
8.3补码29
1第一个c语言的helloworld
1.1include头文件包含
头文件包含,写法#include<文件名>,
1.2main函数
这个就是C语言程序的入口,所有的C程序都是从main开始执行,一个C的源程序必须有一个main函数,也只能有一个main函数
1.3注释
//注释一行
/**/代表块注释,可以注释多行代码
1.4{}括号和代码块
代表一个代码单元
1.5声明
C语言规定,所有的变量和函数必须先声明,然后才能使用.
1.6C语言自定义名字的要求
可以使用大小写字母,下划线,数字,但第一个字母必须是字母或者下划线
字母区分大小写
变量名最好用英文,而且要有所含义,通过变量的名称就能猜测变量的意思。
1.7return语句
在C语言当中任何函数遇到return代表这个函数停止,当main函数遇到return,代表整个程序退出
return代表函数的返回值,如果返回类型是void,可以直接写return,而不需要返回任何值
2C语言的编译
2.1编译过程
2.2gcc编译选项
-o代表指定输出文件名
-E代表预编译
预编译处理include的本质就是简单的将include中的文件替换到c文件中
如果include包含的头文件在系统目录下,那么就用#include<>,如果包含的文件在当前目录下,那么用#inlclude“”
-S代表汇编
-c代表编译
2.3printf执行原理
2.4CPU32位64位简介
一个字节是8个bit,一个字是两个字节,整型4个字节
8位寄存器
AL00000000256
16位寄存器
AXALAH
0000000000000000
1111111111111111
四个通用寄存器
AX
BX
CX
DX
32位寄存器
EAX0000000000000000000000000000000000000000000000111111*********1111111111111111111
EBX
ECX
EDX
64位寄存器
REAX
REBX
RECX
REDX
3C语言中的数据类型
3.1常量
常量就是在程序中不可变化的量,常量是不可被赋值的。
3.1.1#define
#define的本质就是简单的文本替换
通过#define定义的常量,在C语言里面一般叫宏定义
3.1.2const
const定义一个变量,但是这个变量的值只能在定义的时候赋予,之后就不可以修改。
对于const类型的变量,一定要在定义的时候给变量赋初值,不然定义之后就无法赋值了。
3.2字符串常量
在C语言当中“”引用的字符串都是字符串常量,常量一旦定义也是不可以被修改的。
3.3位,字节,字
3.3.1位
计算机内部都是二进制的,一个二进制的位,就叫做一个bit,就是一位
3.3.2二进制
逢二加1,在二进制表达数的时候是只有0和1,而没有2这个数的
二进制最大表示的数,就是2几次幂
对于8位的CPU来讲,最大表达的数是2的8次幂
3.3.3十进制
逢10加1,只有从0到9的数,没有10这个数,
3.3.4八进制
从0到7,逢8加1
在C语言中八进制是数字前面加0
3.3.5十六进制
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10
逢16加1,
在C语言当中表达一个十六进制数的方式,数字前面加0x前缀
3.3.6字节
8个bit为代表一个字节
3.4sizeof关键字
sizeof与size_t类型
sizeof是计算数据在内存当中占多大空间的,单位字节
由于sizeof永远返回的是一个大于等于0的整数,所以如果用int来表示sizeof的返回值就不合适,size_t一般就是一个无符号的整数.
3.5十进制,二进制,八进制,十六进制
3.6int类型
3.6.1int常量,变量
一个int型数据占据4个字节的内存大小,在16位操作系统下,int是2个字节,在32和64位操作系统下,int是4个字节。
inta;//代表在内存当中开辟一个4个字节大小的空间
a=10;//代表4个字节的空间内容是常量10
小端对齐和大端对齐
高地址放高位,底地址放低位---小端对齐
高地址放低位,底地址放高位—大端对齐
对于大型unixCPU都是按照大端对齐方式处理int,
但对于x86构架CPU,还有ARM,是小端对齐的
3.6.2printf输出int值
inta=0x100;//十六进制
printf(“%d”,a);%d的意思是按照10进制打印一个整数
%x
%X,输出十六进制的时候是用大写的ABCDEF还是小写的abcdef,
3.6.3printf输出八进制和十六进制
%o
3.6.4short,long,longlong,unsignedint
在32位系统下:
short=2个字节
long和int一样,是4字节
longlong是8个字节
在64位操作系统下
int,4个字节
long在大多数64位系统下8个字节
unsignedint//无符号整数
unsignedlong//无符号的长整数
unsignedshort//无符号短整数
9l,9L,9ll,9LL,9u,9ull,9ULL
3.6.5整数溢出
当把一个大的整数赋值给小的整数,叫溢出。
intI=0x12345678
shorta=I;
当一个int赋值给short,会将高位抛弃,
3.7char类型
3.7.1char常量,变量
char是字符型,代表一个字节的内存
char在内存当中,有符号最大7f,
无符号,最大ff
unsignedchar
char的本质就是一个字节,一个BYTE
3.7.2printf输出char
%c
3.7.3不可打印char转义符
\a,警报
\b退格
\n换行
\r回车
\t制表符
\\斜杠
\’单引号
\”双引号
\?
问号
3.7.4char和unsignedchar
char取值范围为-128到127
unsignedchar为0-255
3.8浮点float,double,longdouble类型
3.8.1浮点常量,变量
floatf=2.5;
doublef1=3.1415926
3.8.2printf输出浮点数
%f,%Lf
3.9类型限定
3.9.1const
const限定一个变量的值不可以改变
3.9.2volatile
告诉编译器不要自作聪明的给我优化代码,把我的变量优化的寄存器里面计算,只要是volatile类型变量,每一步都需要从内存当中读取。
3.9.3register
register告诉编译器,这个变量只是用寄存器就好,提高效率,所以说register只是一个建议,而不是必须的结果。
4字符串格式化输出和输入
4.1字符串在计算机内部的存储方式
字符串是内存中一段连续的char空间,以’\0’结尾
字符串就是0结尾的连续char的内存
4.2printf函数,putchar函数
printf格式字符
字符
对应数据类型
含义
d
int
接受整数值并将它表示为有符号的十进制整数
hd
Shortint
短整数
hu
Unsignedshortint
无符号短整数
o
unsignedint
无符号8进制整数
u
unsignedint
无符号10进制整数
x/X
unsignedint
无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF
f
float或double
单精度浮点数或双精度浮点数
e/E
double
科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写
c
char
字符型。
可以把输入的数字按照ASCII码相应转换为对应的字符
s/S
char*/wchar_t*
字符串。
输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
p
void*
以16进制形式输出指针
%
%
输出一个百分号
printf附加格式
字符
含义
l
附加在d,u,x,o前面,表示长整数
-
左对齐
m(代表一个整数)
数据最小宽度
0
将输出的前面补上0
直到占满指定列宽为止
不可以搭配使用
-
N(代表一个整数)
宽度至少为n位
不够以空格填充
printf是打印一个字符串
putchar是打印一个字符
4.3scanf函数与getchar函数
5运算符表达式和语句
5.1基本运算符
5.1.1=
数据对象:
泛指数据在内存的存储区域
左值:
表示可以被更改的数据对象
右值:
能赋给左值的量
5.1.2+
5.1.3–
5.1.4*
5.1.5/
5.1.6%
取模,取余数
5.1.7+=
inta=10;
a=a+5;
可以简写成a+=5;
5.1.8-=
a=a–5;a-=5;
5.1.9*=
a=a*5;a*=5;
5.1.10/=
5.1.11%=
5.1.12++
5.1.13--
5.1.14逗号运算符
intI=6+5,3+2
逗号表达式先求逗号左边的值,然后求右边的值,整个语句的值是逗号右边的值。
5.1.15运算符优先级
优先级
运算符
结合性
1
++(后缀),--(后缀),()(调用函数),{}(语句块),.,->
从左到右
2
++(前缀),--(前缀),+(前缀),-(前缀),!
(前缀),~(前缀),sizeof,*(取指针值),&(取地址),(type)(类型转化)
从右到左
3
*,/,%
从左到右
4
+,-
从左到右
5
<<>>
从左到右
6
<><=>=
从左到右
7
==!
=
从左到右
8
&
从左到右
9
^
从左到右
10
|
从左到右
11
&&
从左到右
12
||
从左到右
13
?
从右到左
14
=,*=,%=,+=,-=,<<=,>>=,&=,|=,^=
从右到左
15
(逗号运算符)
从左到右
5.2复合语句
{}代码块
5.3类型转化
doubled=10.2;
inta=d;//隐式转换
inta1=3;
inta2=2;
doublemid=(double)a1/(double)a2;//显示的强转
printf("mid=%f\n",mid);
6条件分支语句
6.1关系运算符
在C语言中0代表假,非0代表真,
在计算机程序判断是根据一个条件返回是真还是假来做不同的操作。
6.1.1<
6.1.2<=
6.1.3>
6.1.4>=
6.1.5==
一个=号在C语言里面是赋值的,不是比较的,但是很多初学者爱犯一个严重的错误,就是用=号来比较两个数是否相等
6.1.6!
=
!
=
6.2关系运算符优先级
前四种相同,后两种相同,前四种高于后两种优先级
6.3逻辑运算符
6.3.1&&
逻辑与
6.3.2||
逻辑或
6.3.3!
逻辑非
6.4if
6.5ifelse
两路分支if语句,只可能执行一路,不可能同时执行两路,也不可能两路都没有被执行
6.6ifelseif
ifelseif这种于语法可以实现多路的分支,但只有一路被执行。
else永远是和最近的一条if语句配对。
6.7switch与break,default
switch是为多重选择准备的,遇到break语句,switch就终端执行
6.8条件运算符?
一个求绝对值的例子
inti=-8;
intx=(i<0)?
-i:
i;
?
号用法
当?
号前面括号内容为真的时候,执行?
号之后冒号之前的语句,否则执行冒号之后的语句
6.9goto语句与标号
尽量不要在程序当中使用goto语句,
7循环语句
7.1while
while(条件),如果条件为真,那么循环就执行,否则循环退出
7.2continue
continue意思是跳过下面语句,继续执行循环
7.3break
break中断循环,
7.4dowhile
do
语句
wile(条件);
对于dowhile来讲,至少能执行一次,
7.5for
可以指定循环次数的语句
7.6循环嵌套
8整数在计算机内部的存储方式
8.1原码
将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值
+7的原码是00000111
-7的原码是10000111
+0的原码是00000000
-0的原码是10000000
8.2反码
一个数如果值为正,那么反码和原码相同
一个数如果为负,那么符号位为1,其他各位与原码相反
+7的反码00000111
-7的反码11111000
-0的反码11111111
8.3补码
原码和反码都不利于计算机的运算,如:
原码表示的7和-7相加,还需要判断符号位。
正数:
原码,反码补码都相同
负数:
最高位为1,其余各位原码取反,最后对整个数+1
-7的补码:
=
10000111(原码)
111111000(反码)
11111001(补码)
+0的补码为00000000
-0的补码也是00000000
补码符号位不动,其他位求反,最后整个数+1,得到原码
用补码进行运算,减法可以通过加法实现
7-6=1
7的补码和-6的补码相加:
00000111+11111010=100000001
进位舍弃后,剩下的00000001就是1的补码
-7+6=-1
-7的补码和6的补码相加:
11111001+00000110=11111111
11111111是-1的补码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础 讲义 v10