




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.5.1字符常量 字符常量:用一对单引号(不分左右)括起的一个字符,如a, A , # , 9 说明:1. 字符常量的值是该字符在ASCII码中的码值(P374)。 2. a 和A 是两个不同的字符常量,a 97, A 65 3. 开头的字符序列称为特殊形式的字符常量(转义字符),3.5 字符型数据,例 main ( ) printf (“-n“); printf (“-ab-ct-derftgn“); printf (“htibbj-kn“); 运行结果: - f gde h j-k 3.5.2 字符变量 字符变量:用于存放一个字符常量。 字符变量的定义形式: 如:char c1,c2; /*定义c1,c2为字符型变量,占一个字节*/ c1=a; c2=b; /*将字符常量 a, b 赋给c1和c2 */,字符常量存放到字符变量中,是把其ASCII码值存放到内存中,由于其存储形式与整数存储形式相似,所以整、字符型数据之间可通用。 main( ) char c1,c2; c1=97; c2=98; printf (“c1=%c,c2=%c n“,c1,c2); printf (“c1=%d,c2=%d n“,c1,c2); 运行结果:c1=a, c2=b c1=97,c2=98,3.5.3 字符数据在内存中的存储形式及使用方法,main( ) char c1, c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf (“c1=%c, c2=%cn“, c1,c2); 运行结果:c1=A, c2=B,例. 大小写字母的转换,main( ) int i; char c; c=97; i=a; printf (“%c , %dn “, c, c); printf (“ %c , %dn “, i, i ); 运行结果:a , 97 a , 97 在Turbo C 中,字符数据占一个字节,当ASCII 码值在128255之间时,其最高位为1,占据了符号位,以数据输出时为负数,以字符输出时是对应的字符,以无符号数据输出时,也是其对应的数据。,例. 字符数据与整型数据之间可以相互赋值,字符串常量:用一对双引号(不分左右)括起的字符序列。 如:“BEIJING“ “CHINA“ “$123“ “a“ 字符串使用的有关说明: 字符串可出现在输出函数中; 如:printf (“This is a C program. n“); 2. 字符常量与字符串常量是不同的; 如:char c1, c2; c1=a; 可以 c2=“a“ ; 错误 不能把字符串赋给字符型变量,字符串在内存中存放时,系统自动加字符串结束符 0,该字符在ASCII码中的码值为0,是空操作符,即无动作,不显示。,3.5.4 字符串常量,3. C中无字符串变量,字符串可以赋给字符数组; 4. 若字符串为“ CHINA“ ,它在内存中的实际存储形式是: 其长度是6而不是5,最后一个字符是0,是系统自动加上的,不能人为加上此字符,它既无显示或打印输出也无任何动作。,1.定义的同时给变量赋初值 如:int a=3; float b=3.1415; char c=x; 2.定义变量时,可以对其中的一部分变量赋初值 如: int a=3, b, c, d=8; 3.把一个常量赋给不同变量时,最好分别进行。 如:int a=b=c=3; 而应写为:int a=3,b=3,c=3; 4.初始化是在程序运行时,执行本函数时赋以初值的。 如:int a=3; 相当于:int a; a=3;,3.6变量赋初值,在C语言中,整、实、字符型数据间可以混合运算 一、不同类型数据间进行运算时,要转换成同一类型 转换过程中,低类型向高类型靠拢,然后进行运算,不同类型之间转换如下图所示,横向左箭头为必转,纵向箭头表示有条件类型转换。 高 double float long unsigned 低 int char, short 例如:10+a1.58765.1234b,3.7 各类数值型数据间的混合运算,例:T3-7-3.c main( ) float a; double b; a=10 + a + 1.5 - 8765.1234 * b; b=10 + a + 1.5 - 8765.1234 * b; printf (“a=%f , b=%f n“, a,b); 运行结果:a=-858873.562500 , b=-858873.593200,3.8.1 C运算符简介 除控制语句(if, while,for)和输入/输出函数;大部分操作都由运算符处理。 1. 算术运算符:+ 、-、* 、 / 、% 2. 关系运算符: 、=、|、& 5. 赋值运算符:= 6. 条件运算符:? : 7. 逗号运算符:, 8. 指针运算符:*、 & 9. 求字节数运算符:sizeof 10. 强制类型转换运算符:(类型) 11. 分量运算符: 、 12. 下标运算符: 、 13. 其它运算符:如函数调用,3.8 算术运算符和算术表达式,1、基本的算术运算符 +:加法或正值运算符,如:2+3 、+5 -:减法或负值运算符,如:8-3 、-6 *:乘法运算符, 如:3*5 / : 除法运算符, 两则可以是整或实型数据。 %:求余运算符 两则必是整型数据。,3.8.2算术运算符和算术表达式,例. 整型数据除法运算 main ( ) int a,b,c; a = 5; b = 3; c = a / b; printf(“c=%dn”, c); 运算结果: c=1,例. 实型数据除法运算 main ( ) float a,b,c; a = 5; b = 3; c = a / b; printf (“%fn”,c); 运算结果:1.666667,算术表达式: 用算术运算符和括号将运算对象(常量、变量、函数)连接起来的,符合C语言语法规则的式子。 如:a*b/c-1.5+a 在C语言中,运算符共有15个优先级,其中算术运算符的优先级是: *、/ 、%(3级) + 、-(4级) 算术运算符的结合方向:从左向右 如:a-b+c :算符优先级相同,结合性:从左向右 a-b*c :算符*的优先级高于- 若运算符两侧的运算对象类型不同时,低类型向高类型转换,2、算术表达式和运算符的优先级与结合性,一般形式: (类型名) (表达式) 如:(double)a 将a转换为double型 (int)(x+y) 将x+y的值转换为整型 (float)(5%3) 将5%3的值转换成单精度实型 说明:1.(int)(x+y) 与(int)x+y 意义不同 2. 类型转换后得到一个中间值,原变量类型不发生变化。 例T3-8.c main( ) float x , i; x=3.6; i=(int) (x); printf (“x=%f, i=%fn”, x, i); 运算结果:x=3.600000, i=3.000000,3、强制类型转换运算符,例 main( ) float a,b,c,d; int e,f ; a=5; b=3; c=a/b; d=(float)(5%3); e=(int)(a/3); f=(int) (b+3.8); printf(“c=%f, d=%f, e=%d, f=%dn”,c,d,e,f); 运算结果: c=1.666667, d=2.000000, e=1, f=6 思考:程序运行期间,a,b的值发生变化没有?,:增1运算符,使变量值增1。 :减1运算符,使变量值减1。 如:+i ,-i:在使用变量i之前,先使变量i加(减)1。 i+,i-:在使用变量i之后,使变量i值加(减)1。 例T-.c main( ) int i,j; i=3; j=+i; printf (“i=%d,j=%dn”,i,j); 运算结果:i=4,j=4,4、自增、自减运算符,例 main( ) int i,j; i=3; j=i+; printf (“i=%d,j=%dn“,i,j); 运算结果:i=4,j=3 说明: 1.+,-运算符只能用于变量,而不能用于常量和表达式。 如a+,b-是正确的,而5+,(x+y)-却是错误的。 2.+,-运算符的结合方向是从右向左。,例 main( ) int i; i=3; printf (“i1=%dn”,-i+); printf (“i2=%dn”,i); 运算结果:i1=-3 i2=4 例T3-8-5.c main( ) int i; i=3; printf (“i1=%dn”,-+i); printf (“i2=%dn”,i); 运算结果:i1= - 4 i2= 4,(1)C中的运算符和表达式: 表达式中的子表达式的求值顺序各编译系统是有差别的。 如对表达式: a=f1( ) + f2( ) 一般情况下是先调用f1( ),再调用f2( ),先后次序无关紧要,但有些情况,结果却不同,编程时要注意所用的编译系统。 如表达式: (i+) + (i+) + (i+) 有的系统的求值顺序是先求第一个,再求第二个,最后求第三个子表达式,其结果是: 3+4+5=12, 最后i的值为6 而在Turbo C中却有所不同:,5、表达式使用的进一步说明,例 main( ) int i=3,j=3,k,q; k=(i+)+(i+)+(i+); q=(+j)+(+j)+(+j); printf (“i=%d,j=%d,k=%d,q=%dn“,i,j,k,q); 运算结果: i=6,j=6,k=9,q=18 (TC) i=6,j=6,k=9,q=16 (VC),(2)在C语言中运算符的确定 在由多个字符组成的表达式中,应尽可能多地从左向右将若干个字符组成一个运算符, 必要时加:括号或空格,以避免混淆(这是好的设计程序风格)。 如:i+j 其结合性是:(i+) +j 而不是:i+(+j) 。 (3)printf 函数输出实参的顺序 如:int i=3; printf (“%d,%dn”,i,i+); Visual C+按从左到右的顺序求值,输出结果:3,3(VC) Turbo C 是按从右到左顺序求值,输出结果是:4,3(TC) 结论:不写别人甚至自己都看不懂的程序,也不写那些不知道系统会怎样运行的程序,基本的算术运算符 算术表达式和运算符的优先级与结合性 强制类型转换运算符 自增、自减运算符 表达式使用的进一步说明,6 算术运算符总结,1、赋值运算符 “=”是赋值号,也是赋值运算符 功能:将赋值号右边表达式的值赋给赋值号左边的变量,赋值 号同时含有计算 的功能。 如:a=3; b=x*y; a,b变量中原来不管存放什么值,执行赋值语句后, 新值将 取代旧值,3.9 赋值运算符和赋值表达式,变量类型的不同,所接收的数据也是不同的,当赋值运算符两侧的数据类型不一致时,在赋值时要进行类型转换 (1) 实型数据赋给整型变量时,舍去实型数据的小数部分 如:int i; i=3.56; (2) 整型数据赋给实型变量时,数值不变,但以浮点形式 存放于内存。 (3) double型数据赋给float变量,截取7位有效数字存放float单元,应注意数值溢出 (4)字符型数据赋给整型变量 无符号字符型赋给整型量:将其存放在整型变量的低8位中,而高位以0补齐 带符号字符型赋给整型量时若最高位为1(负数),则整型变量的高8位补1,若最高位为0(正数),则整型变量高8位补0。 (5) int, short, long型数据赋给char变量,则将其低位赋给char型变量 (6) long型数据赋给int型变量,将long型数据的低16位赋给int型变量 (7)将unsigned int型数据赋给 long 型变量时 将unsigned short型数据送到long int型变量的低16位,longint的变量高16位补0 若无符号数据赋给相同长度的带符号的变量,则原样赋给。 (8) 将带符号的数赋给长度相同的无符号变量,2、类型转换,2、类型转换 变量类型的不同,所接收的数据也是不同的,当赋值运算 符两侧的数据类型不一致时,在赋值时要进行类型转换 (1) 实型数据赋给整型变量时,舍去实型数据的小数部分 如:int i; i=3.56; 结果i的值为3 (2) 整型数据赋给实型变量时,数值不变,但以浮点形式 存放于内存。 如: float a=23; 先将23转换成23.000000,然后送a中 double b=23; 先将23转换为23.00000000000000,然后送b中,(3) double型数据赋给float变量 截取其前面的7位有效数字,存放到float单元,应注意数值 范围不能溢出,如: float f; double d=123.45678e65; f=d; 由于数据溢出,f将得到错误的值 float 数据赋给double变量时,数值不变, 有效位扩展到16位。,(4)字符型数据赋给整型变量 字符数据占一个字节,整型数据占两个字节,字符数据存入整型变量的低8位,有两种情况: 无符号字符型数据赋给整型变量时:将其存放在整型变量的低8位中, 而高位以0补齐,main ( ) int i; unsigned char c ; c=376; i=c; printf(“i=%d, c=%dn”, i, c); 结果: i=254 c=254,带符号的字符型数据赋给整型变量时 若最高位为1(负数),则整型变量的高8位补1,若最高位为0(正数) 则整型变量高8位补0。 例T3-8-9.c main( ) int i; char c; c=376; i=c; printf (“i=%d,c=%dn”,i,c); 运行结果:i= -2,c= -2,(5)int, short, long型数据赋给char变量,则将其低位赋给char型变量 例T3-8-10.c main() int i=289; char c; c=i; printf(“i=%d,c=%d, c=%c n”,i,c,c); 运算结果: i=289,c=33,c=!,(6)long型数据赋给int型变量,将long型数据的低16位赋给int型变量 例T3-8-11.c main() short a; long b=65544; a=b; printf(“a=%d,b=%ldn“,a,b); 运算结果:a=8, b=65544,a=8,符号位,b=65544,(7)将unsigned int 型数据赋给 long 型变量时 将unsigned short 型数据送到 long int 型变量的低16位,long int的变量高16位补 0 例T3-8-12 main ( ) unsigned a=65535; long b; b=a; printf(“a=%u ,b=%ldn“, a, b); ,输出: a=65535, b=65535,若无符号数据赋给相同长度的带符号的变量,则原样赋给。 Unsigned int int unsigned short short int unsigned long long int 要注意数据的有效位占据符号位 例T3-8-13.c main( ) unsigned int a=65535; int b; b=a; printf (“a=% u ,b=%dn”,a,b); 运算结果:a=65535,b= -1,(8)将带符号的数赋给长度相同的无符号变量 过程: 原样赋给 例T3-9.c main( ) unsigned int a; int b= -1; a=b; printf (“a=% u,b=%dn”,a,b); ,1 111111111111111,1 111111111111111,a,b,符号位,数值位,运算结果: a=65535,b= -1,在赋值号前加其它运算符,可以构成复合运算符。 如: a=a+b a+=b x=x*(y+8) x*=y+8 x=x%3 x%=3 为了便于记忆,将赋值号左边移到赋值号右边,赋值号左边再 补上变量名。 如:a + = b a + = (b) a=a+b , 其中a是变量,b是表达式 x * = y+8 x * = (y+8) x=x*(y+8) 在C语言中,有十个二元运算符: +、-、*、/、%、&、| 可与赋值号一起构成复合运算符; 其优点是:简化程序,提高编译效率。,3、复合的赋值运算符,由赋值运算符将一个变量和一个表达式连接起来的式子。 (1)一般形式: (2)赋值表达式求解过程: 计算赋值号右边表达式的值,然后赋给左边的变量。 如:a=3+5 在C语言中,表达式又可以是赋值表达式, 如a=(b=5); 其中 b=5是赋值表达式,其值是5, 因此a的值是5,整个表达式的值是5。,4、赋值表达式,赋值运算符的结合顺序:从右向左 因此:a=(b=5) 与 a=b=5 是等价的。 例: a=b=c=5 表达式的值为5,a,b,c的值为5。 a=5+(c=6) 表达式的值为11,a的值为11,c的值为6。 a=(b=4)+(c=6) 表达式的值为10,a的值为10,b为4,c为6。 a=(b=10)/(c=2) 表达式的值为5,a的值为5,b为10,c为2。,赋值表达式也可以包含复合的赋值运算符 main( ) int a=12, b; b=(a+=a-=a*a); printf (“a=%d, b=%dn”,a,b);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防汛抗旱教育课件
- 包头照明工程解决方案(3篇)
- 成都土石方工程方案(3篇)
- 防控知识培训表课件
- 合同修订协议的法律程序要求
- 建筑钢材购买合同2篇
- 租聘充电宝合同模板3篇
- 2025年标准版二手车交易协议书范本3篇
- 印刷类战略合作合同4篇
- 黑龙江省大庆市2025-2026学年高三上学期第一次月考思想政治试卷
- DBJ33T 1320-2024 建设工程质量检测技术管理标准
- 2023年成人高等考试《民法》(专升本)真题及答案
- 幼教培训课件:《学前儿童常见心理及行为问题的诊断与矫治》
- IBM Maximo:Maximo数据迁移与备份策略.Tex.header
- 驾照科一试题库-900题
- 山东省职业指导师职业技能竞赛决赛考试题库(含答案)
- 强化学习在信息路由中的应用
- 大象版科学新大象版 五年级上册科学课件-3.2《生活习惯与健康》(练习+视频)
- Satyam-audit-failure-case-auditing-speech(萨蒂扬公司审计失败的案例分析)
- 医学检验技术临床案例及分析
- 第3课《追求人生理想》第2框《努力把人生理想变为现实》-【中职专用】《哲学与人生》同步课堂课件
评论
0/150
提交评论