C基础班讲义v10.docx

上传人:b****6 文档编号:5918613 上传时间:2023-01-02 格式:DOCX 页数:23 大小:158.99KB
下载 相关 举报
C基础班讲义v10.docx_第1页
第1页 / 共23页
C基础班讲义v10.docx_第2页
第2页 / 共23页
C基础班讲义v10.docx_第3页
第3页 / 共23页
C基础班讲义v10.docx_第4页
第4页 / 共23页
C基础班讲义v10.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C基础班讲义v10.docx

《C基础班讲义v10.docx》由会员分享,可在线阅读,更多相关《C基础班讲义v10.docx(23页珍藏版)》请在冰豆网上搜索。

C基础班讲义v10.docx

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的补码

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1