资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
变量 基本运算符及其表达式,第三讲,Begin:,第二章 数据类型、运算符和表达式,22常量、变量,变量说明(声明)格式:,数据类型说明符 变量名称表,ANSI C 规定,用变量说明(声明)完成这两项工作,数据类型说明符 说明数据的类型,23 常量、变量和标准函数,例: int sum; int x,y; float volt; char degree;,变量与内存 每一个变量有名字,类型,值,位置和大小。 当一个新的值赋予变量时,新值替换原值。 从内存中读取变量的值,其值不会改变。,23 常量、变量和标准函数,用来存放整型数据的变量。,1. 整型变量,整型变量的分类表,与操作系统、编译系统、机器有关,在定义整型变量时,要注意数据类型允许的数值范围。,23 常量、变量和标准函数,#include void main() short int a, b; unsigned c, d; a=32767; b=-32768; c=32768; d=65535; printf(“a=%d,b=%dn“, a, b); printf(“c=%u,d=%u“, c, d); ,a=32767,b=-32768 c=32768,d=65535,例:整型变量的使用。,23 常量、变量和标准函数,结论:a+1 的结果(32768) 超出了基本整型变量 b 所能容纳的数值范围(-3276832767),这种情况称为“溢出”(整型上溢)。,分析:,书上P31 例2.6也是整型上溢的问题,运算符:sizeof 取字节数运算符 sizeof(数据类型) sizeof(变量),23 常量、变量和标准函数,2.实型变量 用来存放实型数据的变量。,实型变量分类表,#include void main() float f; double d; f=33333.33333; d=33333333333333.333333; printf(“f=%fnd=%fn“,f,d); ,23 常量、变量和标准函数,f=33333.332031 d=33333333333333.333500,例:实型变量的使用。(实型数据的有效数字和精度),由于单精度浮点型数据有效位数有7位,可保留6位小数。而变量f数值的整数已占5位,故小数2位之后均为无效数字。d是双精度型,有效位为16位,可保留14位小数,但输出结果时小数后最多保留6位,其余部分四舍五入。,3.字符型变量 用来存放字符常量的变量。,在内存单元中,每个字符型变量分配一个字节用于存放一个字符。(实际上存放的是字符的ASCII码值。) c1单元存放的是01000001(十进制65); c2单元存放的是01100001(十进制97) 。,例: char c1,c2; c1=A; c2=a;,所以,在C语言中字符型数据和整型数据之间可以通用。即: 允许对整型变量赋字符值。(高8位为0) 允许对字符变量赋整型值。(高8位丢掉) 允许把字符变量按整型量输出。 允许把整型量按字符量输出。 允许字符量与整型量进行运算。(a+1),23 常量、变量和标准函数,23 常量、变量和标准函数,#include void main() char c1, c2; c1=97; c2=98; printf(“c1=%c,c2=%cn“, c1, c2); printf(“c1=%d,c2=%d“, c1, c2); ,c1=a,c2=b c1=97,c2=98,例:字符变量的使用。,23 常量、变量和标准函数,/*编写程序将小写字母a和b转换为大写字母。*/ #include int main(void) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“%c,%cn%d,%dn“,c1,c2,c1,c2); return 0; ,A,B 65,66,例:字符变量的使用。,4变量的初始化 在定义变量的同时给变量赋初值。,例: int a=15,b; char c1=X,c2=Y; float f1,f2,f3=24.5; int a=20,b=20,c=20;,23 常量、变量和标准函数,int a=b=c=20; (错),数据类型 变量名=常量值;,24 基本运算符及其表达式,24 基本运算符及其表达式,2.4.1 算术运算符(Arithmetic Operators)与算术表达式,1.基本算术运算符,注意:%运算只能用于整型数据,24 基本运算符及其表达式,2.4.1 算术运算符(Arithmetic Operators)与算术表达式,例: 19/5 结果为3 (整数相除结果为整数。) 22%4 结果为2 (取模运算返回余数。),问题: 19/5.0 结果为? 22%4.0 结果为? 22%a 结果为?,注意:教材上P38页第5行应为: 3.0+10.0/5.0 结果为1.0,24 基本运算符及其表达式,2.自增自减运算符(increment and decrement Operators),C自增自减运算符,7 7 7 7 -6,i = ?,24 基本运算符及其表达式,2.自增自减运算符(increment and decrement Operators),注意: 自增、自减运算只能用于变量,不能用于常量和表达式。 例如:+6, +(a+b)均为非法的运算 表达式 x+y 等价于(x+)+y。 自增、自减运算符的运算顺序。,在表达式中当多个运算符相连时,应自左而右地将若干个字符组成一个运算符。,24 基本运算符及其表达式,k=(i+)+j;,i=2,j=1,k=2,3 算术表达式(Arithmetic Expressions) 由算术运算符和括号将运算对象(如常量、变量、函数等)连接起来的一个有值的式子。,说明: 算术表达式的运算顺序如下:,24 基本运算符及其表达式,3 算术表达式(Arithmetic Expressions),说明: 表达式的类型为该表达式值的类型。 表达式的求值顺序:先按运算符的优先级执行,当一个运算对象两侧的运算符优先级别相同时,则按结合性处理。,24 基本运算符及其表达式,转换方式:自动类型转换强行类型转换,24 基本运算符及其表达式,类型转换Type Conversions,在C程序中,当不同类型的量进行运算时,要转换成同一种类型然后再进行运算。,例: 15+2.5* A 7.0 / 2,22 数据类型,强制类型转换forced conversions将一个表达式的值转换成所需要的类型。,例: (double)i (int)(f1+f2) (float)(14/4),强制或自动转换都是一种临时性转换,并未改变变量的原类型。,例: #include void main() int x=8; float f=6.85; printf(“(float)x=%f,x=%dn“,(float)x,x); printf(“(int)f=%d,f=%fn“,(int)f,f); ,一般形式: (类型说明符)(表达式),24 基本运算符及其表达式,2.4.2 关系运算符与关系表达式(Relational Operators and Precedence) 关系运算(比较运算) 即比较两个量的大小,比较的结果为“真”或“假”。,例:a3 如果a=8,则结果为“真”;如果a=1,则结果为“假”。,1.关系运算符,C关系运算符,Relational operators have lower precedence than arithmetic operators,关系运算符为双目运算符,左结合性。,2.关系表达式Relational Expression 用关系运算符将两个表达式连接起来的式子。,24 基本运算符及其表达式,C语言没有逻辑型数据。因此, 在返回逻辑值时: 用1表示“真”,用0表示“假”; 在判断逻辑值时: 用非0代表“真”,用0代表“假”。,24 基本运算符及其表达式,0,1,0,For instance: 已知a=3,b=2,c=1 则 1)c = = a + b 结果为 0 2)a = = b b 结果为 1,24 基本运算符及其表达式,例,写出下列各题的关系表达式: 1)X为不小于 -5 的整数 2)X 为非零的数 3),例,#include void main() int a ,b ,c ;a = b = c = 10 ; a = b = c ; printf ( “%d , %d , %d n”, a , b, c ) ; a = ( b= c+ * 2 ) ; printf ( “%d , %d , %d n”, a , b, c ) ; a = b c = 100 ; printf ( “%d , %d , %d n”, a , b, c ) ; ,2.4.3 逻辑运算符与逻辑表达式Logical Operators and Precedence 关系表达式只能表达一些简单的关系,如: sum=1500 y!=z 即只能对一个条件进行测试。,而以下关系: 20x100 则不能用关系表达式表达。,逻辑非! 真值表,1.逻辑运算符 C逻辑运算符:,24 基本运算符及其表达式,逻辑或 真值表,逻辑与& 真值表,24 基本运算符及其表达式,2.逻辑表达式Logical Expression 用逻辑运算符将表达式连接起来的式子。,如: 1) 0x10 x=0&x5或x5x15 3)a、b不能同时为零 a=0&b!=0|a!=0&b=0,一般形式为: 表达式1逻辑运算符表达式2,24 基本运算符及其表达式,逻辑表达式是构成选择结构条件的基本式子。,注意 在计算逻辑表达式时,并非所有的逻辑运算符都参与运算。,如:x=y=-1; +x /* x=? y=? */,0,-1,24 基本运算符及其表达式,“短路能力”,例: 1)7 4 |( mum = 0 )由于 5 4 故短路 ,则 mum = 0 不执行 .,24 基本运算符及其表达式,#include void main( ) int a=-1, b=-1, d=-1; d=(a=1)|(b=1); printf(“(1) %d, %d, %dn“, a, b, d); d=(a=0)|(b=0); printf(“(2) %d, %d, %dn“, a, b, d); d=(a=1) ,例,程序运行结果: (1) 1, -1, 1 (2) 0, 0, 0 (3) 1, 1, 1 (4) 0, 1, 0,#include void main( ) /*注意短路*/ int a , b , c , d ; a = b = c = 1 ; d = + a | + b Run,例,程序运行结果: (1) 2111 (2) 2211 (3) 2,2,2,24 基本运算符及其表达式,2.4.4 条件运算符与条件表达式,条件运算符: ? : 三目运算符 右结合,例: ab?max=a:max=b,例: (grade=60)?printf(“Passed”):printf(“Failed”);,一般形式: ?:,2.4.5 赋值运算符与赋值表达式,简单赋值运算符为“=”;由“=”连接的式子称为(简单)赋值表达式(assignment statement) 。,一般形式: =,1简单赋值运算符和简单赋值表达式,24 基本运算符及其表达式,赋值运算符优先级为14,仅高于逗号运算
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号