




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安电子科技大学 - Xidian University 1C程序设计西安电子科技大学 - Xidian University 2提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格西安电子科技大学 - Xidian University 3类型的分类:类型的分类:1. 数据数据类型类型基本类型:基本类型:Boolean(布尔布尔)Character(字符(字符)Integer(整数(整数)Floating-point(浮点数(浮点数)Void定义枚举类型定义枚举类型:Enumeration(枚举(枚举)构造类型:构造类型:Pointer(指针)(指针)Array(数组(数组)Data
2、 structure(结构(结构)西安电子科技大学 - Xidian University 4 类型的作用:w 决定变量或常量的合法取值范围(值集)。w 决定合法的(一般是用运算符或函数表示的)操作的范围(操作集)。w 决定变量的存储空间的大小。w 区分名字相同、类型不同的符号(变量、函数、运算符)。w 决定将一种类型的值能否及如何转换成另一种类型的值(类型转换)。w 为编译程序提供依据,令其检查出程序中的一部分错误。1. 数据数据类型类型西安电子科技大学 - Xidian University 5整型整型 : 有符号基本整型 signed int 无符号基本整型 unsigned int 有
3、符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int注意区分取值范围。注意整数溢出。1. 数据数据类型类型西安电子科技大学 - Xidian University 6举例:1. 数据数据类型类型西安电子科技大学 - Xidian University 7整型溢出:#include void main()short a,b;a=32767; b=a+1; printf(%d,%d,a,b);1. 数据类型运行结果为:运行结果为:32767,-32768西安电
4、子科技大学 - Xidian University 8实型(浮点数):1. 数据类型双精度浮点数:双精度浮点数:double 有效位数有效位数16位位 单精度浮点数:单精度浮点数: float有效位数有效位数7位位 double d;scanf(“%lf” , &d);float f; scanf(“%f” , &f);注意浮点数的运算误差。注意浮点数的运算误差。西安电子科技大学 - Xidian University 9字符型:charc1,c2;c1=a;c2=b;注意:一个字符变量在内存中占一个字节。1. 数据类型例:向字符变量赋以整数。 main() char c1,c
5、2; c1=97; c2=98; /*以字符形式输出*/ printf(%c %cn,c1,c2); /*转换为整数形式输出*/ printf(%d %dn,c1,c2); 输出: a b 97 98西安电子科技大学 - Xidian University 10提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格西安电子科技大学 - Xidian University 112.变量与常量 变量:程序执行过程中其值可以改变的量。 变量三要素:名字、类型、值double d;int a;int b=9; /赋初值赋初值int sum, x, y, z;a = 100; /赋值赋值sum =
6、 a + b; /correctsum = b + x; /errorconst double d=3.14;const int b=9; 常量:程序执行过程中其值不可以改变的量。常量:程序执行过程中其值不可以改变的量。西安电子科技大学 - Xidian University 12标识符命名规则: 标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。 命名规则: C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。 大写字母和小写字母被认为是两个不同的字符。 变量名尽量做到“见名知意”。 关键字不能做变量名, for,
7、continue等(错误的变量名)。 变量名不要与C库函数名相同。2.变量与常量西安电子科技大学 - Xidian University 13标识符命名规则举例: 下面列出的是合法的标识符,也是合法的变量名:sum,average, day, month,student_name,tan,basic 下面是不合法的标识符和变量名: dohn,y 123,33,3d64,ab2. 变量与常量西安电子科技大学 - Xidian University 14 几个基本概念辨析: 区别赋值和赋初值: 区别变量值和变量地址值 int a = 10; &a 区别有意义值和无意义值2. 变量与常量do
8、uble d;int a;int b=9; /赋初值赋初值int sum, x, y, z;a = 100; /赋值赋值sum = a + b; /correctsum = b + x; /error西安电子科技大学 - Xidian University 15字面量分类: 整型常量浮点型常量字符型常量字符串常量枚举常量2. 变量与常量西安电子科技大学 - Xidian University 16整型常量的表示方法:整型常量即整常数。C整常数可用以下三种形式表示:(1) 十进制整数。如123, -456, 0。(2) 八进制整数。以0开头的数是八进制数。 如0123表示八进制数123,即(12
9、3)8. 其值为:182+281+380,等于十进制数83。 (3) 十六进制整数。以0 x开头的数是十六进制数。 如0 x123,代表十六进制数123 (123)16=1162+2161+3160=256+32+3=291。 2. 变量与常量西安电子科技大学 - Xidian University 17浮点数常量的表示方法:实数(real number)又称浮点数(floating-point number)。实数有两种表示形式:十进制小数形式。82. 75.63 0.42l (正确表示)指数形式。如123e3代表123103注意字母e之前必须有数字,且e后面的指数必须为整数3.2e-2 7
10、e3 (正确表示)e-2 .e5 1e2.5 e (非法表示)2. 变量与常量西安电子科技大学 - Xidian University 18字符型常量的表示方法: 用一对单撇号括起一个字符来表示 转义字符:反斜线后面跟上一个字符 n r b ” 0 t 区别数字和数字字符:0 0 区别0 和 0的区别2. 变量与常量main() printf( ab ct derftgn); printf(htibbj k); 西安电子科技大学 - Xidian University 192. 变量与常量例:大小写字母的转换。#include void main() char c1,c2; c1=a; c2=
11、b; c1=c1-32; c2=c2-32; printf(%c%c,c1,c2);西安电子科技大学 - Xidian University 202. 变量与常量字符串常量: 是用一对双撇号括起来的字符序列 “you are a student. ” 空串 带有引号的串表示:“Please enter ” Y” or ” N” :” 带有回车的串表示: “this is a string. n” 字符串常量和字符常量的区别 表示形式不同 在内存中存储空间不同 操作不同 存放两者的变量不同西安电子科技大学 - Xidian University 21类型转换保值转换和非保值转换 保值转换安全的,
12、数据精度不受损害,低类型到高类型。 非保值转换不安全,数据精度受损害,高类型到低类型,编译系统会告警。 显示转换 隐式转换 赋值表达式中 函数返回值中西安电子科技大学 - Xidian University 22 显示强制转换通过强制转换运算符实现 显示强制转换形式: () () 强制转换的作用:将被作用的表达式类型强制转换成所制定的类型。 double d = 21.84;int a ;a = (int)d; /a=21 注意:强制转换是暂时的,仅仅在被强制时才进行转换,平时仍旧保持原来类型。int a(15), b; double d;d = 4.65 + double(a); b = 3
13、+a;类型转换西安电子科技大学 - Xidian University 23提 纲数据类型变量与常量,类型转换运算符与表达式程序设计风格西安电子科技大学 - Xidian University 24运算符 C的运算符有以下几类1算术运算符 (+-*/%)2关系运算符 (=!=)3逻辑运算符 (!&|)4位运算符 ( |&)5赋值运算符 (=及其扩展赋值运算符)6条件运算符 (?:) 7逗号运算符 (,) 8指针运算符 (*和&) 9求字节数运算符 (s i z e o f) 10强制类型转换运算符 ( (类型) ) 11分量运算符 (-) 12下标运算符 () 13其他
14、 (如函数调用运算符()西安电子科技大学 - Xidian University 25运算符结合性 从左到右 int a , b, c; a=b=c=5; a-b+c; 从右到左 int a , b, c; a=b=c=5;西安电子科技大学 - Xidian University 26表达式 表达式:由运算符和操作数组成的式子。操作数包括常量,变量,函数和其他一些命名的标识符 表达式优先级:如果对于某个运算符优先级搞不清,使用括号改变优先级。 表达式种类: 算术表达式 b-3+9/5 逻辑表达式 a&!a 关系表达式 2=3 赋值表达式 a+=2 条件表达式 a0?a+;a 逗号表达式
15、 a=5,a+西安电子科技大学 - Xidian University 27表达式的值和类型类型类型值值算术表达式算术表达式高操作数类型高操作数类型关系表达式关系表达式boolean 0或或1逻辑表达式逻辑表达式boolean0或或1赋值表达式赋值表达式条件表达式条件表达式冒号前后类型高的表冒号前后类型高的表达式的类型达式的类型逗号表达式逗号表达式最后一个表达式最后一个表达式最后一个表达式最后一个表达式任何一个表达式都有确定的值和类型任何一个表达式都有确定的值和类型西安电子科技大学 - Xidian University 28算术表达式 组成由算术运算符(+ - + - * / %)与位运算符
16、( & | )组成的表达式 值 数值 类型 当表达式中各个操作数类型相同时,表达式类型与操作数类型相同。但当表达式中操作数类型不同时,计算时会发生低类型数向高类型数的强制转换,使得最终表达式的类型与高类型的操作数类型相同。西安电子科技大学 - Xidian University 29算术表达式强调强调 计算算术表达式时,低类型转换到高类型,表达式类型是高类型。 低到高的类型转换是安全的,高到低的类型转换是不安全的,将会损失精度。1. / 运算符适用于int , float, double类型,但是整型数相除,其值为整型数。西安电子科技大学 - Xidian University 30自
17、增、自减运算符 作用是使变量的值增1或减1,如:+i,-i(在使用i之前,先使i的值加(减)1)i+,i-(在使用i之后,使i的值加(减)1) 注意区分:i=3; printf(“%d”,+i); 若改为printf(%d,i+);西安电子科技大学 - Xidian University 31自增、自减运算符自增、自减运算符l自增、自减运算符的作用是自增、自减运算符的作用是使变量的值增使变量的值增1 1或或减减1 1自增运算符:自增运算符:+i+ i+ 等价于等价于 i = i + 1 i = i + 1 或或 i += 1i += 1+i +i 等价于等价于 i = i + 1 i = i
18、+ 1 或或 i += 1i += 1自减运算符:自减运算符:-i+i+或或+i+i5i5i6i-i-或或-i-i5i5i4西安电子科技大学 - Xidian University 32自增、自减运算符的使用自增、自减运算符的使用j = +ij = +i1i2il自增、自减运算符的使用自增、自减运算符的使用例如:若例如:若i i的值为的值为1 1q表达式表达式“j = +ij = +i”的值是什么?的值是什么?q表达式表达式“j = i+j = i+”的值是什么?的值是什么?2jj = i+j = i+1i2i1j西安电子科技大学 - Xidian University 33自增、自减运算符的
19、使用自增、自减运算符的使用a+ * b 得得 63al自增、自减运算符的使用自增、自减运算符的使用例如:例如:int a=3,b=2,c;int a=3,b=2,c;q执行执行“c = +a * b”之后之后a、b、c的值的值?q执行执行“c = a+ * b”之后之后a、b、c的值?的值? 2bc4a2b8c4a2b6c+a * b 得得 8西安电子科技大学 - Xidian University 34自增、自减运算符的副作用自增、自减运算符的副作用l表达式中过度使用自增、自减运算符会带来副表达式中过度使用自增、自减运算符会带来副作用,容易产生歧义作用,容易产生歧义例如:若例如:若i i的值
20、为的值为1 1,j j的值为的值为2 2,表达式,表达式“i+ji+j”的的值是什么?值是什么?例如:若例如:若i i的初值为的初值为1 1,i+i+i+i+i+i+等于多少?等于多少?西安电子科技大学 - Xidian University 35关系表达式 组成: 关系运算符( = 、 =、=bcabc”的逻辑表达式为:的逻辑表达式为: (ab) & (bc)(ab) & (bc) 若直接表示为若直接表示为abcabc,结果如何?,结果如何?西安电子科技大学 - Xidian University 41C C语言中的逻辑语言中的逻辑“”(k % 4 = 0 )或者:或者: !
21、(k % 4)(k % 4 != 0 )或者:或者: (k % 4)l关系表达式和逻辑表达式的值为真或假,关系表达式和逻辑表达式的值为真或假,在在C C语言中分别用数值语言中分别用数值1 1和和0 0表示。表示。F特别提醒:特别提醒:C C语言程序中,只要条件表达式的值为语言程序中,只要条件表达式的值为0 0,则判定为假,否则判定为真则判定为假,否则判定为真西安电子科技大学 - Xidian University 42C C语言中的逻辑语言中的逻辑“”(k % 4 = 0 )或者:或者: !(k % 4)(k % 4 != 0 )或者:或者: (k % 4)l关系表达式和逻辑表达式的值为真或假
22、,关系表达式和逻辑表达式的值为真或假,在在C C语言中分别用数值语言中分别用数值1 1和和0 0表示。表示。F特别提醒:特别提醒:C C语言程序中,只要条件表达式的值为语言程序中,只要条件表达式的值为0 0,则判定为假,否则判定为真则判定为假,否则判定为真西安电子科技大学 - Xidian University 43逻辑表达式逻辑表达式伪代码表示:伪代码表示:(k mod 4 = 0) and (k mod 100 0)(k mod 4 = 0) and (k mod 100 0)C C语言表达式:语言表达式: (k % 4 = 0 ) & (k % 100 != 0)简化形式:简化形
23、式:! (k % 4) & (k % 100)伪代码表示:伪代码表示: (k mod 400 = 0)(k mod 400 = 0)C C语言表达式:语言表达式: (k % 400 = 0)简化形式:简化形式: (k % 400)l逻辑运算符的优先级从高到低依次是:逻辑运算符的优先级从高到低依次是:!, &, |西安电子科技大学 - Xidian University 44逻辑表达式的短路计算逻辑表达式的短路计算“”,若,若a a的逻辑的逻辑值为值为“假假”,则无需计算,则无需计算b b的逻辑值,就可得的逻辑值,就可得知表达式知表达式“”“假假”。 (k % 4 = 0 ) &
24、amp; (k % 100 != 0)“”,若,若a a的逻辑的逻辑值为值为“真真”,则无需计算,则无需计算b b的逻辑值,就可得的逻辑值,就可得知表达式知表达式“”“真真”。l因此,对于逻辑表达式,可以进行短路计算因此,对于逻辑表达式,可以进行短路计算(既只计算表达式的部分项)。(既只计算表达式的部分项)。西安电子科技大学 - Xidian University 45练习练习l设设a = 3, b = 4, c = 5a = 3, b = 4, c = 5,试计算以下,试计算以下表达式的值表达式的值a+bc & b = ca+bc & b = ca|b+c & b a|b+c & b c c(!(a+b)+c (!(a+b)+c 1) & (b +c/2) 1) & (b +c/2)西安电子科技大学 - Xidian University 46条件表达式 组成: 由三目运算符组成的表达式 类型: 不是表达式值对应的表达式的类型,而是冒号前后两个表达式中类型高的表达式的类型西安电子科技大学 -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论