第2章 数据类型、运算符和表达式Data type, operator and expression_第1页
第2章 数据类型、运算符和表达式Data type, operator and expression_第2页
第2章 数据类型、运算符和表达式Data type, operator and expression_第3页
第2章 数据类型、运算符和表达式Data type, operator and expression_第4页
第2章 数据类型、运算符和表达式Data type, operator and expression_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、W W W .CCIT.EDU.CN主讲:杨忠宝主讲:杨忠宝长春工程学院长春工程学院 Changchun Institute of Technology 计算中心计算中心 Computer Center 语言教研室语言教研室 Language Teaching and Research (C Language )第二章第二章 数据类型、运算符和表达式数据类型、运算符和表达式Data type, operator and expression Focus Difficulties 2.1 数据类型数据类型 Data typelC语言程序中所用到的每一个常量、变量及函数等基本操作对象都有一种数据类

2、型与之相联系。数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 其上可进行的操作C数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整 型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型intC数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char枚举类型enum整 型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型intC数据类型基本类型构造类型构造类型指针类型指针类型空类

3、型空类型void定义类型定义类型typedef字符类型char枚举类型enum整 型实型单精度型float双精度型double数组结构体struct共用体union短整型short长整型long整型int2.2 标识符、常量与变量标识符、常量与变量 Identifier, constant and variable 标识符标识符 Identifiern定义:用来标识变量、常量、函数等的字符序列n命名规则:l只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线;l大小写敏感如:sum、Sum、SUM是不同的三个标识符;l最长255个字符;l不能使用关键字;n命名原则:l见名知意l不宜混淆

4、 如l与1, o与0例:判断下列标识符合法性sum _Sum M.D.John day 3days # 33 $123 lotus_1_2_3 char ab常量常量 ConstantConstantn定义:程序运行时其值不能改变的量(即常数)n分类:l符号常量:用标识符代表常量l定义格式: #define 符号常量 常量l一般用大写字母l是宏定义预处理命令,不是C语句例 符号常量举例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);运行结果:total=300l直接常量:

5、l整型常量 l实型常量 l字符常量 l字符串常量变量 Variablen概念:其值可以改变的量n变量定义的一般格式: 数据类型 变量1,变量2,变量n;n变量初始化:定义时赋初值 例: int a,b,c; float data;决定分配字节数和数的表示范围合法标识符例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;n变量的使用:先定义,后使用例1 int student; stadent=19; /Undefined symbol statent in function main v变量定义位

6、置:一般放在函数开头main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(data=%fn,data);变量定义可执行语句编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1, b=-3,c;abc4字节4字节4字节地址地址.内存1-3随机数【例2.3】变量的定义。#include stdio.hmain() int a; /定义变量a为整型 a=20; printf(%d,a);运行结果: 20a20变量值存储单元变量名1. 整型常量2. 整型变量2.3 整型量整型量 Integer&整型常量(整常数)v三种形式:l

7、十进制整数:由数字09和正负号表示.如 123,-456,0l八进制整数:由数字0开头,后跟数字07表示.如0123,011l十六进制整数:由0 x开头,后跟09,af,AF表示. 如0 x123,0Xff问题:0123 = ( )100 x123 = ( )100Xff = ( )1083291255问题:0123 = ( )100 x123 = ( )100Xff = ( )10不合法的八进制数: 082(包含了非八进制数码)-0127(出现了负号)不合法的十六进制整常数: 5A (无前缀0X)0X3H (含有非十六进制数码)&整型变量 类型说明符 数的范围 分配字节数l int -214

8、74836482147483647 l short int -3276832767 l unsigned int 04294967295 l long int -21474836482147483647 l unsigned long 04294967295 举例:举例: int a , b , c ; /* a,b,c为整型变量 */ long x , y ; /* x,y为长整型变量 */ unsigned p , q ; /* p,q为无符号整型变量 */【例2.4】整型变量的定义与使用。#includestdio.hmain() int a,b,c,d; unsigned u; a=1

9、0; b=-20; u=30; c=a+u; d=b+u; printf(c=%d , d=%d n , c , d );运行结果:c=40,d=102.4 实型量实型量 real-type1. 实型常量2. 实型变量&实型常量(实数或浮点数)实型常量(实数或浮点数)v表示形式:表示形式:l十进制数形式:(必须有小数点)十进制数形式:(必须有小数点) 如如0.123, .123, 0.123, .123, 123.0, 0.0, 123.123.0, 0.0, 123.l指数形式:(指数形式:(e e或或E E的的前前后后必须有数字;指数必须为整数)必须有数字;指数必须为整数)如如12.312

10、.3e3 ,123E2, 1.23e4 , e3 ,123E2, 1.23e4 , e-5e-5 , , 1.2E-3.51.2E-3.5 &实型变量实型变量v floatfloat: 占占4 4字节,提供字节,提供7 7位有效数字位有效数字数值范围为数值范围为3.4E-383.4E-383.4E+38 3.4E+38 v doubledouble:占占8 8字节,提供字节,提供15151616位有效数字位有效数字 数值范围为数值范围为1.7E-3081.7E-3081.7E+3081.7E+308 【例2.6】#includestdio.hvoid main() float a; doubl

11、e b; a=1234.56789; b=1234.5678901234; printf(%fn%fn,a,b);运行结果:1234.5678711234.5678902.5 字符型量字符型量 Character1.字符常量2.转义字符3.字符变量 4.字符串常量转义字符及其含义:转义字符含义n0radddtbfxhh转义字符含义换行 空值回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符&字符常量v定义:用单引号括起来的单个普通字符或转义字符. v字符常量的值:该字符的ASCII码值如 101 -A 012 -n 376 - x61 -a 60 -0 4

12、83 -()例:A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101& 转义字符:反斜线后面跟一个字符或一个代码值表示例 转义字符举例main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Visual C+);运行结果:(屏幕显示)A B CIsay:How are you?C ProgramVisual C+&字符型变量v字符变量存放字符ASCII码vchar与int数据间可进行算术运算例 a=D; /* a=68; */ x=A+5; /*

13、 x=65+5; */ s=!+G /* s=33+71; */没有字符串变量,用字符数组存放【例2.9】把小写字母换成大写字母#includestdio.hvoid main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c,%cn%d,%dn,c1,c2,c1,c2);运行结果:A,B65,66v字符常量与字符串常量不同&字符串常量v定义:用双引号( )括起来的字符序列v存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串hello在内存中a a 0例 aa例 空串 0例: char ch; ch

14、=A; 例: char ch; ch=A; 2.6类型转换类型转换 Type Conversion 不同类型数据间的转换n自动转换l什么情况下发生运算转换-不同类型数据混合运算时赋值转换-把一个值赋给与其类型不同的变量时输出转换-输出时转换成指定的输出格式函数调用转换-实参与形参类型不一致时转换l运算转换规则:不同类型数据运算时先自动转换成同一类型doublefloatlongunsignedintchar,short低高自动转换自动转换说明:必定的转换运算对象类型不同时转换例例 char ch; int i; float f; double d;ch / i + f * d - ( f +

15、i )intintdoubledoubledoubledoubledoubledouble强制转换l一般形式:(类型名)(表达式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 l说明:强制转换得到所需类型的中间变量,原变量类型不变 例 main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%dn,x,i); 结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生2.7基本运算符和表达式基本运算符和表达式 Basic Operator and ExpressionC运算符算术

16、运算符:(+ - * / % + -)关系运算符:( = !=)逻辑运算符:(! & |)位运算符 :( | &)赋值运算符:(= 及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(* &)求字节数 :(sizeof)强制类型转换:(类型)分量运算符:(. -)下标运算符:()其它 : (( ) -)l学习运算符应注意:l运算符功能l与运算量关系n要求运算量个数n要求运算量类型l运算符优先级别l结合方向l结果的类型v算术运算符和表达式l基本算术运算符: + - * / %l结合方向:从左向右l优先级: - * / % + - (2) (3) (4)说明:l-可为单目运算符时,右结合

17、性l两整数相除,结果为整数l%要求两侧均为整型数据例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ()问题:求123的百位、十位、个位数字?l自增、自减运算符+ -l作用:使变量值 加加1 1 或 减减1 1l种类:n前置 +i, -i (先执行i+1或i-1,再使用i值)n后置 i+,i- (先使用i值,再执行i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; printf(%d,+j);

18、j=3; printf(%d,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4l说明:n+ - 不能用于常量和表达式,如5+,(a+b)+n+ -结合方向: 自右向左n优先级:- + - * / % + - (2) (3) (4)例 -i+ -(i+) i=3; printf(%d,-i+); /-3 例 -i+ i=3; printf(%d,-i+); l算术表达式l由算术运算符、运算数和括号连接起来的式子。l示例:a+b、(a*2)/c、abs(-4)-3v赋值运算符和表达式l简单

19、赋值运算符l符号: =l格式: 变量标识符=表达式l作用:将一个数据(常量或表达式)赋给一个变量l复合赋值运算符l种类:+= -= *= /= %=l含义: exp1 op= exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d+2;l说明:n结合方向:自右向左n优先级: 14n左侧必须是变量,不能是常量或表达式l 赋值表达式的值与变量值相等,且可嵌套l赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例 3=x-2*y; a+b=3;例 float f; int i; i=10;

20、f=i;则 f=10.0例 int i; i=2.56; /结果i=2;例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/ b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2v逗号运算符和表达式形式:表达式1,表达式2,表达式n结合性:从左向右优先级: 15逗号表达式的值:等于表达式n的值用途:常用于循环for语句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(%d,%d,%d,a,b,c); printf(%d,%d,%d,(a,b,c),b,c); /a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/逗号表达式,表达式值18,x=3/1,2,3/3,2,3v求字节数运算符 lsizeof是一个比较特殊的单目运算符,也是一个非常有用的运算符,常用于动态分配内存。l其一般形式为: sizeof

温馨提示

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

评论

0/150

提交评论