第2章c语言学习_第1页
第2章c语言学习_第2页
第2章c语言学习_第3页
第2章c语言学习_第4页
第2章c语言学习_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序假想第2章C语言全然北京科技大学统计机系2本章关键内容

本章讲解C语言的全然,包罗:

信息类型

运算符和表达式

均是程序假想的根本学问

为啥会商这些学问?同样程序要对信息履行操纵操作:操作的对象是信息通过运算符和表达式履行操纵2022/3/313例似:【例2,1】统计圆的面积,半径为5cm.程序似下:例jc2_1main(){floatr,area;r=5;area=3,14*r*r;printf("%f\n",area);}运算结论是输出圆的面积:78,500000程序中用到的信息:r、area、5,3,14对信息履行的运算:*、=2022/3/314解析:波及信息类型的根本学问统计机操纵操作时,要实现以下任务:在内存中给半径r和运算结论area开发存储空间,存放它们的值.该当留多大的地点来存放它们的值?信息5和3,14与r、area差不,它们是在编写程序时就给出肯定的值,在运算环节中不大概扭转.似许的数统计机如何操作?对整数5和小数3,14,统计机存放时是否有区不?2022/3/315C语言的信息类型本章会商根本类型信息整型字符型实型(浮点型)根本类型单精度型空类型数组类型结构体类型共用体类型罗列类型双精度型C信息类型组织类型指针类型2022/3/3162,1,1整型信息1.根本整型信息int,安排2Byte短整型信息shortint,安排2Byte长整型信息longint,安排4Byte整型信息的类型整型信息均以二进制补码情势存储题目:为啥要接收补码?如果何示意?2022/3/317统计机中正、负数的示意例似:109=(1101101)2要区不:+109和-109方式是:将符号也数码化即:正的符号+用0示意负的符号-用1示意∴统计机中的数示意方式是:符号位+二进制数值(以8bit为例)+109→+1101101→01101101-109→-1101101→111011012022/3/318题目:统计机统计复杂化例似统计:(-19)+(+22)10010011+00010110需要判断符号是否同样:介入同样,结论符号不变,同时履行绝对值相加介入差不,结论取绝对值大的数的符号,处理的方式是同时履行绝对值相减:使用反码或补码的示意方式(按前述示意的编码称为原码),即能将减法一概变形为加法.2022/3/319原码、反码和补码

正数:原码、反码、补码同样

符号位为0,数值为对应的二进制数.

+109[01101101]原=[01101101]反=[01101101]补负数:原码符号位为1,数值为绝对值的二进制数.-109[11101101]原反码符号位为1,数值为绝对值的二进制数列位变反.-109补码符号位为1,数值为绝对值的二进制数列位变反加1,-109[10010010]反[10010011]补2022/3/31102,有符号和无符号整型信息–有符号的整型信息signedint–无符号的整型信息unsignedint–区不是将最高位看作符号位仍是信息位例似:做为有符号数使用时,最高为符号位为负数,值是:-88(再求一次补)做为无符号数使用时,最高为信息位为无符号的数,值是:6544811111111101010002022/3/3111例似:main(){unsignedintm;按有符号数输出m=65448;printf("\nm=%d\n",m);printf("m=%u\n",m);例jc2_a}输出结论:m=-88按无符号数输出m=654482022/3/3112整型信息的类型及法那么类型标题类型符bit取值范畴整型[signed]int[signed]short[int]unsigned[int]16-215~215-1(短整型)-(-32768~32767)160~216-1无符号整型(0~65535)长整型[signed]long[int]unsignedlong[int]3232-231~231-10~232-1无符号长整型

方括号示意可选项

int安排2Byte,long安排4Byte2022/3/31132,1,2实型信息1.实型信息的类型单精度实型信息float,安排4Byte双精度实型信息double,安排8Byte2.实型信息的存储小数部分指数部分单精度实型小数的符号位指数的符号位2022/3/3114实型信息的类型及法那么类型类型符Byte绝对值的范畴有效数字单精度型双精度型floatdouble4810-37~10387~8位10-307~1030815~16位

C规格同时未具体法那么各种实型信息所占字节数,也不法那么详渺小数和指数部分的位数.

同样而言,小数部分位数多,信息示意的有效数字多,精度就高;而指数部分位数多,那么示意的信息范畴更大.有效数字的意义?例jC2_a2022/3/31152,1,3字符型信息

字符型信息char,安排1Byte

字符型信息是指字母、数字、各种符号等用ASCII值示意的字符

例似'a'是一个char类型信息,称作字符常量,存储:011000012,1,4空类型

空类型void

同样与指针或函数结合使用2022/3/31162,2常量、变量与规格函数

关键内容:

常量

变量

规格库函数2022/3/31172,2,1常量

在运路程序的环节中值连结不变的量

1.整型常量

十进制:0~9

八进制:0~7,以0开头

十六进制:0~9,A~Fa~f,以0x或0X例似:开头100-80+12301002401000730x380x100X100XFF0x0a2022/3/31181,整型常量

整型常量的类型:

依照值大小默许类型.

整型常量背面加l或L,那么信任是longint型

例似:123L、0L、432l、0x100l看重:十六进制常量中可以使用大写字母A~F,也能够使用小写字母a~f.八进制常量中不能展示数字8或9例似:018,0921非法2022/3/31192,实型常量–十进制情势––指数情势1,01,+12,0-12,00.0–1e31,8e-3-123E-6-.1E-3等价于:1×1031,8×10-3-123×10-6-0.1•×指数只能是10-3整数,而尾数那么可所以整数也可所以小数,不管指数或尾数均不能省略例似:1e、E.5,E-3非法实型常量的类型:默许为double型,背面加F(或f),那么突出示意该数是float类型例似:3,5f、1e2F•••2022/3/31203,字符型常量

可视字符常量

单引号括起来的单个可视字符

例似:'a'、'A'、'+'、'3'、''等

转义字符常量

单引号括起来的\与可视字符组合,例似:\0字符串终了标记\n回车换行跳到下一个输出位置双引号字符ddd为1到3位八进制数所代表的字符hh为1到2位十六进制数所代表的字符\t\"\ddd\xhh2022/3/31214,字符串常量

用双引号括起的一个字符序列

例似:"ABC"、"123"、"a"、"\n\t"

字符串常量的长度:

所包涵的字符个数

字符串常量的存储方式:"\nGoodmorning"字符串终了标记

所占存储单元数:串长度+1例似:a\0\nGoodmorning\02022/3/31225,符号常量

以标识符来代表的常量

事先编译预操作号令define定义

编译时先由系统更换为它所代表的常量,再履行编译

例似:#defineLEN2,5定义符号常量main(){floata,b;a=2*3,14*LEN;b=3,14*LEN*LEN;printf("a=%f,b=%f\n",a,使用符号常量b);}编译前系统履行更换2022/3/31235,符号常量main(){floata,b;更换为a=2*3,14*2,5;b=3,14*2,5*2,5;printf("a=%f,b=%f\n",a,b);}•define是编译预操作号令,必须以“#”开头•编译预操作号令在第7章会商.2022/3/31242,2,2变量1,变量的有关概念在程序运行环节中,其值扭转的信息,称为变量,变量用标识符示意,称为变量名.变量必须“先定义后使用”系统为变量安排存储单元,存储变量的值.编写程序时通过变量名来存、取变量值.变量名例似:a有变量a它的值是510510变量值为变量安排的存储单元2022/3/31252,变量定义变量定义的同样标准:信息类型讲明符变量列表;例似:inti,j;longk,m;floatx,y;charch1,ch2;•必须使用合法的标识符作变量名•不能使用关键字为变量命名2022/3/31263,变量的初始化:许可在讲明变量的时辰对变量赋初值.例似:inta=5,b=10+2;doublex=23,568,y;charch1='a',ch2=66,ch3='\142';示意定义变量同时对变量存储单元赋值.差错的初始化:inta=3+b,b=5;floatm=n=23,16;2022/3/31272,2,3规格库函数

由C编译系统定义的一种函数,存放在系统函数库中,用户可以依照需要随时调用

常用函数

似:printf、scanf、fabs、sqrt、sin、

(常用数学函数参赐教材P30表2,5)

函数调用情势:

函数名([指标表])

例似:putchar('a')例jc2_3

sqrt(x)2022/3/31282,3运算符和表达式

关键内容:

算术运算符和算术表达式

赋值运算符和赋值表达式

关系运算符和关系表达式

逻辑运算符和逻辑表达式

位运算符和位运算表达式

前提运算符和前提表达式

逗号运算符和逗号表达式

其他运算符及其运算2022/3/3129运算符的有关概念

作用:

对运算对象实现法那么的操纵运算

类型:

按运算对象分:

单目、双目、三目

按功能分:

算术、赋值、关系、逻辑

前提、逗号、位、其他2022/3/3130运算符的优先级和结合性

优先级

指各种运算符号的运算优先次序

例似:算术运算优先于关系运算

结合性算术运算中先*后+-

指运算符号和运算对象的结合方向

分为:从左向右(左结合)和从右向左(右结合)

例似:算术运算符为左结合a-b+4

赋值运算符为右结合a=b=2022/3/3131本章波及的运算符类型品种算术运算符+-*%++--=+=-=*==%=+-赋值运算符关系运算符逻辑运算符位运算符前提运算符逗号运算符其他运算符&=|=^=>>=<<=><>=<===!=&&||!&|^~<<>>?:,&sizeof(信息类型标识符)2022/3/3132表达式的有关概念

啥是

由运算符将运算对象毗连成的式子,它表达式描述了一个具体的求值运算环节.

统计表达式的值

依照运算符的运算法那么求值

求值时看重运算符的优先级和结合性

自动变形

强制变形表达式值的类型2022/3/3133例似:

表达式:

150+'b'*2-12,456

b=(++a)-2

a=a*=(a=2)

f=a>b>c

--a||++b&&c++

max=a>b?a:b

a=3,a+=3,a*a

1(float)a+62022/3/3134算术运算

算术运算符的优先级()+-++--*%+-同级同级同级单目双目高低

没有乘方运算符,要统计a3要写作a*a*a的连乘,或用规格库函数pow(a,3)

“”的运算对象可为各品种型信息,但是当履行两个整型信息相除时,运算结论也是整型信息

“%”要求运算对象必须是整型信息,功能是求两数相除的余数,余数的符号与被除数的符号同样.2022/3/3135自增自减运算

++--是单目运算符

有前缀和后缀两种情势

前缀情势:先自增(自减)再援用;

后缀情势:先援用再自增(自减);

功能:表达式的值会差不

前缀情势++a等价于--a等价于a++等价于a--a=a+1a=a–1后缀情势a=a+1a=a–等价于12022/3/3136例似:当a=5时⑴++a表达式的值为6,且a=6⑵a++表达式的值为5,且a=6⑶b=++a等价于a=a+1;b=a表达式的值为6,且a=6,b=6⑷b=a++等价于b=a;a=a+1表达式的值为5,且a=6,b=52022/3/3137讲明:

++和--的运算对象只能是变量(或运算结论是变量的表达式),不能是常量(或运算结论是数值的表达式).

例似:5++、(a+2)++不合法.

具有右结合性,结合方向为从右到左.

例似:–a++等价于

介入有多个运算符接连展示时,C系统尽情很-(a++)多的从左到右将字符组合成一个运算符

例似:i+++j等价于(i++)+j

-i+++-j等价于-(i++)+(-j)2022/3/3138讲明(续):

对函数指标的求值次序:

TurboC系统先统计最右边的指标值,再依次统计左面的指标值.【例2,5】有多个函数指标且为同一变量自增的运算操作.main()运行例2,5{inta=5;printf("%d%d\n",a,a++);}输出结论:652022/3/3139讲明(续):【例2,6】有多个函数指标且为同一变量多次自增的运算操作.main(){inta=5;运行例2,6printf("%d%d\n",a,(a++)+(a++));}输出结论:7112022/3/3140赋值运算

赋值运算符(右结合)

=+=-=*==%=

&=|=^=>>=<<=

赋值表达式

将表达式的值存入变量对应的内存单元中

m=12

b=(++a)-2

m%=3+n等价于m=m%(3+n)

x*=(x=5)2022/3/3141讲明:

赋值号左边必须是变量,右边可所以C语言随意任性合法的表达式

例似:n=t+2<s合法

赋值运算符仅优先于“,”,且具有右结a+b=15不合法合性

例似:

等价于:a=(b=((b*c)>10))

赋值号与数学中的等号含义差不

例似:数学中a=b=b*c>10a=b等价于b=a

C语言中a=b不等价于b=a2022/3/3142关系运算

关系运算符(左结合)

>>=<<===!=

关系表达式

用关系运算符将运算对象毗连成的式子

例似:12<'C'+1(字符型信息对比ASCII值)较高较低

a==b>=c等价于a==(b>=c)

关系运算符优先于赋值,低于算术与(a==b)>=c不等价2022/3/3143讲明:

关系运算的结论该当是逻辑值.C语言用数值用1示意逻辑真,0示意逻辑假

例似:7>5的值是1,5>7的值是0

即关系表达式的值:0或1

实型数可履行大于或小于对比,但同样不'a'>'b'的值是0,'a'<'b'的值是1履行==或!=的关系运算2022/3/3144逻辑运算符

逻辑运算符

&&||!

逻辑运算符的运算法那么运算对象逻辑运算结论aba&&ba||b!a非0非0非0100011100011000非002022/3/3145逻辑表达式

逻辑表达式

用逻辑运算符将运算对象毗连成的式子

例似:0&&'b'

逻辑运算符的优先级和结合性:

!是单目运算符,右结合,高于算术

&&和||是双目运算符,左结合,高于a&&b||c&&da||b-5||c4!x+y>=z赋值运算符,低于关系运算符2022/3/3146逻辑运算法那么

从左到右依次履行逻辑统计

运算对象为非0示意逻辑真

运算对象为0示意逻辑假

逻辑运算的结论为0或1

例似设:a=15,b=0,c=-2

a&&b&&c结论为0

a||b||c结论为1

(a+c)||b&&c结2022/3/31论为147逻辑运算法那么(续)

运算依照从左至右的次序履行,一旦可以肯定逻辑表达式的值,就急速终了运算

——逻辑运算的短路性质

例似设:a=1,b=0,c=-2

a&&b&&c为0,运算停止,表达式值为(a++)||++b&&0--c为非0,运算停止,表达式值为1且a为2,b为0,c为-2(b,c连结原值)2022/3/3148关系与逻辑运算符的使用

示意数学程式a>b>ca>b&&b>c

判断a,b,c三条线段可否构成一个三角形a+b>c&&a+c>b&&b+c>a

aa>=0||b>=0,b差不时为负!(a<0&&b<0)(a<0&&b>=0)||(a>=0&&b<0)||(a>=0&&b>=0)2022/3/3149位运算符~&^|<<>>单目位逻辑运算符移位运算符低于单目、算术和关系运算符,高于其他运算符低于单目、算术运算符,高于其他运算符

位运算符的运算对象只能是整型信息或字符型信息,不能是实型信息

运算对象一概按二进制补码介入运算,同时按位履行运算

位运算的结论是一个整型信息2022/3/3150位逻辑运算符的运算法那么

假定ai和bi均是一个二进制位(bit)运算对象逻辑运算结论aibiai&bai|biai˜aii^bi001101010001011101101100例似:假定a=10,b=010求a&b、a|b、a^b、˜a2022/3/3151程序似下:main(){inta=10,b=010;运行jc2_b输出结论:8102-11printf("%d%d\n",a&b,a|b);printf("%d%d\n",a^b,~a);}00000000000010100000000000001010&0000000000001000˜00000000000010001111111111110101即:a&b的值是8即:˜a的值是-112022/3/3152移位运算

例似:

a<<b

a+8>>b-1等价于(a+8)>>(b-1)例似:假定a=10,b=2,求a<<b、a+8>>b-1main()运行jc2_c{inta=10,b=2;printf("%d%d\n",a<<b,a+8>>b-1);}请自行解析输出结论:运行结论4092022/3/3153前提表达式运算

前提运算符:?

前提表达式的同样情势:

例似:m<n?x:a+3表达式1?表达式2:表达式3

a++>=10&&b-->20?a:bx=3+a>5?100:200

C语言中独一的三目运算符,要精确辨识用?和:分隔的表达式

波及前提运算符的优先级与结合性2022/3/3154前提运算符优先级

前提运算符优先级高于赋值、逗号运算符,低于其他运算符

例似:

⑴m<n?x:a+3等价于:(m<n)?(x):(a+3)

⑵a++>=10&&b-->20?a:b等价于:(a++>=10&&b-->20)?a:b

⑶x=3+a>5?100:200等价于:x=((3+a>5)?100:200)2022/3/3155前提运算符的结合性

前提运算符具有右结合性

当一个表达式中展示多个前提运算符时,该当将位于最右边的问号与离它近来的冒号配对,同时按这一原那么精确辨识各前提运算符的运算对象.例似:w<x?x+w:x<y?x:y与w<x?x+w:(x<y?x:y)等价与(w<x?x+w:x<y)?x:y不等价2022/3/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论