C语言第2章—数据类型、运算符及表达式_第1页
C语言第2章—数据类型、运算符及表达式_第2页
C语言第2章—数据类型、运算符及表达式_第3页
C语言第2章—数据类型、运算符及表达式_第4页
C语言第2章—数据类型、运算符及表达式_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、QuitMenu第第1章程序设计基础章程序设计基础第第2章章 基本基本数据类型、运算符和表达式数据类型、运算符和表达式2.1 数据类型数据类型2.2 常量与变量常量与变量2.3 运算符运算符和和表达式表达式2.4 应用应用举例举例QuitMenu2.1 数据类型数据类型 数组类型 array 指针类型 type* 空类型 void 枚举类型 enum 结构类型 struct 联合类型 union 类类型 class数据类型整型 int short long 字符型 char(属于1字节的整型) 单精度浮点型float实型 双精度浮点型double 长双精度浮点型 long double布尔逻辑

2、型 bool基本数据类型非基本数据类型QuitMenu2.1 数据类型数据类型类型类型类型符类型符占字节数占字节数典型的取值范围典型的取值范围字符型字符型 char1-128+127无符号字符型无符号字符型 unsigned char1025504294967295短整型短整型 short int2-32768+32767整型整型 无符号整型无符号整型 intunsigned int44-2147483648+2147483647单精度型单精度型float4绝对值:绝对值:3.4E-383.4E+38双精度型双精度型double8绝对值:绝对值:1.7E-3081.7E+308布尔型布尔型bo

3、ol1True(1)/false(0)QuitMenu2.2 常量常量与变量与变量2.2.1 常量常量p26常量常量是指在程序执行中不变的量,它分为字是指在程序执行中不变的量,它分为字面面常量常量和和符号符号常量常量两种两种表示方法。如表示方法。如25,-3.26,a,“blue”等都是字面常量,即字面本身就是它的值等都是字面常量,即字面本身就是它的值。u 整型常量整型常量u 实型常量实型常量u 字符型常量字符型常量u 字符串字符串型常量型常量QuitMenu整型常量整型常量 十进制:十进制: 无前缀无前缀,数码为数码为0至至9。 如:如:15,235,0 八进制:八进制: 前缀为前缀为0,数

4、码为,数码为0至至7。 如如:07,0327,-02 十六进制:十六进制:前缀为前缀为0X或或0 x,数码为,数码为0至至9,A至至F或或a至至f 。 如如 :-0 x7,0X5bfQuitMenu实型常量实型常量 小数形式小数形式由正负号、数字和小数点组成,必须有一个且仅有一个由正负号、数字和小数点组成,必须有一个且仅有一个小数点。小数点。 如如+ 0.123 .123 123.0 123. -0.123等。等。 指数形式指数形式尾数尾数 e或或E 指数指数 如如0.1234e+3 1.25E-5QuitMenu字符字符常量常量 用一对半角单引号括起的单个字符。用一对半角单引号括起的单个字符

5、。 如如:A、a、$、! 、? 、5在内存中是以在内存中是以ASCII码表示的。码表示的。 C还还允许使用一种特殊形式的字符常量,即以允许使用一种特殊形式的字符常量,即以“”开头的字符序列,称为转义字符,是将反开头的字符序列,称为转义字符,是将反斜线后面的字符转变成另外的斜线后面的字符转变成另外的意义意义 例如例如,n代代表一个表一个“换行换行”符符 coutn; / 将输出将输出一个换行一个换行.P27QuitMenu字符串常量字符串常量 字符串常量是用双引号(定界符)括起来的一串字符串常量是用双引号(定界符)括起来的一串字符,字符,如如、A、12.42、Program。 C中中字符串常量在

6、内存字符串常量在内存中按顺序存放串中字符的中按顺序存放串中字符的ASCII码码,并在最后自动追加,并在最后自动追加一一个个0字符字符作为结作为结束字符。束字符。Program0 因此,长度为因此,长度为n个字符的字符串常量,在内存个字符的字符串常量,在内存中占用中占用n+1个字节。个字节。QuitMenu字符串常量字符串常量 字符与字符串不等价。字符与字符串不等价。例如例如:A与与A ,前者由,前者由两个字节组成两个字节组成(字符字符A与字符与字符0),而后者只有一,而后者只有一个字节。个字节。 最短的字符串最短的字符串是空字符串是空字符串(),它仅由一个结尾,它仅由一个结尾符符0组成组成。

7、C C中中,没有字符串类型,没有字符串类型,而是用字符数组来处理,而是用字符数组来处理字字符串符串。 QuitMenu符号符号常量常量 也可以用一个标识符代表一个也可以用一个标识符代表一个常量常量 在在C C中中可以用可以用#define#define或或constconst定义符号常量定义符号常量 #include #define PRICE 30 num=10;void main () total=num*PRICE; couttotal=total; int num,total; QuitMenu符号符号常量常量#include const int PRICE=30; num=10;vo

8、id Main () total=num*PRICE; couttotal=total; int num,total; const 数据类型数据类型 符号常量符号常量=值常量值常量;QuitMenu2.2.2 变量变量 变量变量就是在就是在程序运行过程中,其值可以改变的量程序运行过程中,其值可以改变的量 变量必须先定义,后变量必须先定义,后使用使用 格式:格式:数据类型数据类型 变量名变量名1,变量变量名名2,变量变量名名n;例:例:int i, j; /定义定义2个个整型变量整型变量i, j, 各占各占4Bfloat x, y; /定义定义2个个单精度实型变量单精度实型变量x, y,各占各占

9、4Bchar c1; /定义定义1个个字符型变量字符型变量c1,占占1BQuitMenu2.2.2 变量变量 在定义变量的同时指定变量的值称为在定义变量的同时指定变量的值称为变量初始化变量初始化 格式:格式:形式形式1:数据类型:数据类型 变量名变量名=表达式;表达式;形式形式2:数据类型数据类型 变量变量名名(表达式表达式);例:例:int k=35,n(0);int a, b=4, c=5; float x=3.0;QuitMenu2.2.2 变量变量 如果在定义变量时没有对变量进行未初始化,则如果在定义变量时没有对变量进行未初始化,则变量使用的第一步就是给变量赋一个确定的值变量使用的第一

10、步就是给变量赋一个确定的值。例:例:int a,b,c;a=1; b=3; c=4;QuitMenu2.3 运算符运算符与表达式与表达式 所谓所谓运算符运算符就是指运算的符号,例如加运算符(就是指运算的符号,例如加运算符(+)、乘运算符()、乘运算符(*)、取地址运算符()、取地址运算符(&)等。)等。 表达式表达式:用运算符把运算对象连接起来的式子:用运算符把运算对象连接起来的式子 运算对象:常量、变量、函数、指针、数组元素运算对象:常量、变量、函数、指针、数组元素等等QuitMenu2.3.1运算符运算符算术运算符算术运算符运算运算优先级别优先级别()()+ -改变正常优先级改变正

11、常优先级自增自增1、自减、自减112-负号负号(单目运算符)单目运算符)2*, /, %乘法、除法、求余乘法、除法、求余3+, -加、加、减法减法(双目运算符)双目运算符)41算术运算算术运算符符17q模运算符:模运算符:% 只能对整型数进行操作只能对整型数进行操作,其操作意义为,其操作意义为取余取余,不允许对浮点数操作不允许对浮点数操作。 例如例如: 5%3 = 2 1%5=1 25.7%3是非法的是非法的q/对于整型数对于整型数则为除法则为除法取整取整操作。操作。/对于浮对于浮点数点数则为则为通常意义的除法通常意义的除法。 例如例如: 5/2=2 5.0/2.0=2.5说明说明18运用举例

12、运用举例1、 int a=5,b=2; float c=5.0, d=2.0; 求求a/b、a%b、c/d、a+a%b/b、 a%d。解:解: a/b=2、a%b=1、c/d=2.5、 a+a%b/b=5 、a%d非法非法1 / ba+ 0519运用举例运用举例2、已知、已知int a=3467,写出计算其个、十、写出计算其个、十、百、千位的表达式。百、千位的表达式。解:解:a%10, a/10%10, a/100%10, a/1000%10或或a/10003、如下的表达式是否正确?、如下的表达式是否正确?(x+y)(x-y) 5x+120增量和减量运算符增量和减量运算符 P30q增量增量+、

13、减量运算符、减量运算符- (单目运算符单目运算符)作用:使变量的值增加作用:使变量的值增加1或减少或减少1表示:表示:前置运算前置运算 +i或或-i 先使先使i加加(减减)1,再使用变量,再使用变量i的的值。值。后置运算后置运算 i+或或i- 先使用变量先使用变量i的值,的值,再再使使i加加(减减)1。+、-只能用于变量,不能用于常量。只能用于变量,不能用于常量。21示例示例int i=5, j=5, m, n;m=i+; /后置;相当于后置;相当于m=i; i=i+1; /结果:结果:i的值为的值为6,m的值为的值为5;n=+j; /前置;相当于前置;相当于j=j+1;n=j; /结果:结果

14、:j的值为的值为6,n的值为的值为6;22示例示例已知:已知:int a=8,b=10;写出顺次执行;写出顺次执行 c=-a; d=b-; e=a-; f=-b;a至至f的值。的值。 解:解:a、b、c、d、e、f的值为的值为6、8、7、10、7、823#include void main( ) int a,b; int i,j; i=10; j=20; couti_old=i,j_old=jendl; a=2+(+i); /* 2+i 是错误的是错误的 */ b=2+j+; couta=a,b=bendl; couti_new=i,j_new=jendl; i_old=10, j_old=2

15、0a=13 b=22i_new =11 i_new =21242关系运算符关系运算符P30运算符运算符运算运算优先级优先级=小于小于小于等于小于等于大于大于大于等于大于等于6=!=等于等于不等于不等于725关系运算符关系运算符q关系关系运算即比较运算,将两个值进行比较,运算即比较运算,将两个值进行比较,判断比较的结果是否符合给定的条件。判断比较的结果是否符合给定的条件。关关系运算的结果为逻辑值系运算的结果为逻辑值:若满足条件,关若满足条件,关系表达式的值为真系表达式的值为真true(1);若;若不满足条件,不满足条件,关系表达式的值为假关系表达式的值为假false (0)。26运用举例运用举例

16、1. 若A=3, B=2, C=1, 求下列表达式的值。 AB (AB)=C B+C2, 值为1/即(32)=1,1=1为真,值为1/即33为假,值为0273 逻辑运算符P31C+提供了三种逻辑运算符提供了三种逻辑运算符!非(单目逻辑运算符)非(单目逻辑运算符)2& 与(双目逻辑运算符)与(双目逻辑运算符)11|或(双目逻辑运算符)或(双目逻辑运算符)12优先级高低28逻辑运算真值表AB!AA&BA|Btrue(1)true(1)false(0)true(1)true(1)true(1)false(0)false(0)false(0)true(1)false(0)true(1)

17、true(1)false(0)true(1)false(0)false(0)true(1)false(0)false(0)q原则上,逻辑运算符的操作数应为bool型数据,但同时允许是数值型数据,此时,0等价于false,非0等价于true。29运用举例运用举例1、若A=5,B=0,求下列各表达式的值。 !A B&A !B2 | 5&5 1&4&71为为true 71&4&73+1的值。3已知已知: int a=10, b=20, c=30;float x=1.8, y=2.4; ay|ab-!c按按优先级优先级与与结合性结合性,其,其求值顺序求值

18、顺序等同于:等同于:(ay)|(a(b-(!c)t1=1 t2=0t4=0 -&t3=0t5=b=90|x=60&xy?x:y; 2、int x=5;int y=7; xy?x+:y+; 355 赋值运算符赋值运算符 赋值运算符赋值运算符 优先级:优先级:14 右右结合结合形式形式:变量名变量名表达式表达式作用:将右边表达式的值赋给操作符作用:将右边表达式的值赋给操作符左边的变量左边的变量。赋值赋值表达式的表达式的值为值为左边左边的的变量值。变量值。365 赋值运算符赋值运算符 例例 x = 5 y = x + 10 a=b=5 等价与等价与a=(b=5) /右结合右结合q注意

19、注意=与与=的区别的区别 例如:例如:x x=1 1为关系表达式,判断为关系表达式,判断x x是是否等于否等于1 1;x x=1 1为赋值表达式。为赋值表达式。375 赋值运算符赋值运算符 例例 x = 5 y = x + 10 a=b=5 等价与等价与a=(b=5) /右结合右结合q注意注意=与与=的区别的区别 例如:例如:x x=1 1为关系表达式,判断为关系表达式,判断x x是是否等于否等于1 1;x x=1 1为赋值表达式。为赋值表达式。38复合的赋值运算符复合的赋值运算符 +=, -=, *=, /=, %=优先级优先级 14 右右结合结合例:例:a+=3 等价于等价于 a=a+3

20、x*=y+8 等价于等价于 x=x*(y+8)x=x+nx=x-nx=x*nx=x/nx=x%nx + = nx - = nx * = nx / = nx% = n39示例示例1、已知、已知int a=12;求执行求执行a+=a-=a*a 后后a的值。的值。2、若有定义:、若有定义:int m=5,y=2;则执行表;则执行表达式达式y+=y-=m*=y后,后,y的值。的值。a=a-a*a=-132a=a+a=-264 m=m*y=5*2=10y=y-m=2-10=-8y=y+y=-16复合赋值运算复合赋值运算符的结合性为符的结合性为从右至左从右至左406逗号运算符逗号运算符P32q格式格式 表

21、达式表达式1,表达式表达式2,表达式表达式3表达式表达式nq求解顺序及结果求解顺序及结果 先求表达式先求表达式1,再求表达式,再求表达式2,最后求解表最后求解表达式达式n,整个表达式的值为表达式整个表达式的值为表达式n的值。的值。 例如:例如: a=3*5,a*4; a的值为的值为15,整个表达式的值为,整个表达式的值为60 QuitMenu2.3.2 表达式表达式 表达式表达式:用运算符把运算对象连接起来的式子:用运算符把运算对象连接起来的式子 运算对象:常量、变量、函数、指针、数组元素运算对象:常量、变量、函数、指针、数组元素等等 一一个变量、一个常量、一次函数调用都是表达式个变量、一个常

22、量、一次函数调用都是表达式。QuitMenu2.3.2 表达式表达式 当多种运当多种运算符存在算符存在于同一表于同一表达式时,达式时,需考虑运需考虑运算符的结算符的结合性和合性和优优先级。先级。P29QuitMenu2.3.3 数据类型转换数据类型转换 各类数值型数据间的混合运算:将不同数各类数值型数据间的混合运算:将不同数据类型先转换成同一类型据类型先转换成同一类型,然后进行运算然后进行运算自动进行隐式转换强制进行显式转换方式QuitMenu2.3.3 数据类型转换数据类型转换 1.自动转换(隐式转换)自动转换(隐式转换)规则:规则:优先级低的向优先级高的转换优先级低的向优先级高的转换dou

23、blefloatlongunsignedintchar 精度高精度高精度低精度低2.1 + 1/2表达式的值?表达式的值?2.1QuitMenu2.3.3 数据类型转换数据类型转换 2.强制强制转换(显示转换)转换(显示转换)转换形式:转换形式:(数据类型数据类型)表达式表达式 或或 数据类型数据类型(表达式表达式)(int) 2.1 + 1/2int (2.1+1.1)23QuitMenu2.3.4 内部函数内部函数P35C中常用数学函数中常用数学函数 double fabs(double x) 返回返回x的绝对值的绝对值 double exp(double x) 返回指数函数返回指数函数ex的值的值 double log(double x) 返回返回logex的值的值 double log10(double x) 返回返回log10 x的值的值 double pow(double x,double y) 返回返回xy的值的值 double sqrt(double x) 返回返回x的开方的开方 要使用数学函数,应该在程序中加入:要使用数学函数,应该在程序中加入: #include “m

温馨提示

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

评论

0/150

提交评论