第2章 数据类型、运算符与表达式.ppt_第1页
第2章 数据类型、运算符与表达式.ppt_第2页
第2章 数据类型、运算符与表达式.ppt_第3页
第2章 数据类型、运算符与表达式.ppt_第4页
第2章 数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章数据类型、运算符与表达式,本章内容,2.1 C语言的数据类型 2.2常量与变量 2.3运算符和表达式 2.4运算符的优先级 2.5数据类型转换,2.1 C语言的数据类型,数据类型概述,2.1.2整数类型 -1,一般整型:用int表示 短整型:用short int或short表示; 长整型:用long int或long表示; 无符号整型:unsigned int、unsigned short、unsigned long分别表示无符号整型、无符号短整型和无符号长整型,2.1.2整数类型 -2,表2.1 整型数据所占内存字节数和取值范围,2.1.3实数类型,单精度型,用float表示; 双精度

2、型,用double表示。,表2.2 实型数据所占内存字节数、取值范围和精度,2.1.3字符类型,用char表示 常见字符Ascii码 字符A的ASCII码为65 字符a的ASCII码为97 字符0的ASCII码为48,2.2常量与变量,2.2.1常量 常量是指在程序运行中值不能被改变的量 分为直接常量和符号常量,整型常量,八进制整型常量:以数字0开头,由07的8个数码组成,以下是合法的八进制整型常量: 020 061 0123 以下是非法的八进制整型常量: 123 081,以下是合法的十进制整型常量: 20088 0 -55 以下是非法的十进制整型常量: A200 x123,以下是合法的十六进

3、制整型常量: 0X20 0XA5 0XFF 以下是非法的十六进制整型常量: A200X4H,十进制整型常量:由09的10个数码组成,十六进制整型常量:以0 x或0X开头,由09,AF或af的16个数码组成,实型常量,以下均为合法的实型常量: 0.576.895.0 321. .567 -123.456,以下是合法的实型常量: 1E51.34E5134.56E5 0.001234E63.7E-2 以下是非法的实型常量: 3E0.52.5EE-2,一般形式 由09的10个数码和小数点组成 其中小数点不能单独出现,指数形式 由十进制数加上阶码标志“e”或“E”以及阶码组成,如1E5 E或e前必须有数

4、字,且E后面的阶码必须为整数,字符常量,字符常量是用一组单引号引起来的一个字符 例如,A,a,0,+,#等都是合法的字符常量 在C语言中还有一种特殊形式的字符常量,就是以“”开头的字符序列,这类字符也称为转义字符,表2.3 转义字符,字符串常量,字符串常量是由一组双引号括起来的字符序列 以下都是合法的字符串常量: ChinaWelcome123abc5+6=?n“ 字符串常量在存储的时候,会自动为字符串添加一个字符串结束标志符0 ,因此在计算机中存储时,将增加1个字节的存储空间 例如China在计算机中存储时,将占用6个字节的存储空间。,符号常量,用一个标识符表示一个直接常量,称之为符号常量

5、符号常量的定义格式为: #define 自定义标识符直接常量 例如: #define MAX 100 #defineMIN0 #define PI3.1415926 注意: (1)符号常量在使用之前必须定义。 (2)习惯上符号常量的标识符通常用大写字母表示。,2.2.2变量,命名规则 标识符只能由大小写英文字母,下划线“_”,以及阿拉伯数字组成。 标识符的第一个字符必须是大小写英文字母或者下划线,而不能是数字。 变量名不能与C语言中的关键字名称相同。,变量的声明,变量的声明格式为: 变量名1,变量名2,变量名3,; 其中,为: int, short, long, unsigned int, u

6、nsigned short, unsigned long, float, double, char等。 例如: int x,y,z; char c1,c2; float a;,变量声明注意事项,大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符。 变量的声明,必须在变量的使用之前,一般放在函数体的开头部分。 在同一程序块中,变量不能被重复定义。 类型标识符和变量名之间至少要用一个空格字符隔开。 同一类型标识符后面可以同时声明多个变量,变量名之间用英文的逗号隔开,最后一个变量名后需要使用英文的分号(“;”)结尾。,变量的初始化,变量在声明时可以直接赋值,称之为变量的初始化 例如

7、: int x=5,y,z=6; char c1=A,c2=B; float a=67.5; 注意: 在变量初始化中不允许对多个未定义的同类型变量连续初始化,如int x=y=z=5;是不合法的。,变量的赋值,用赋值运算符“=”将一个表达式的值赋给一个变量 main() int x,y,z; /*声明整型变量x,y,z/ char c1=A,c2;/*声明字符型变量c1且赋初值为字符A*/ x=5;y=6;z=x+y; c2=c1+32; /*将变量c1的值的ASCII码加上32赋值给变量c2*/ printf(x+y=%dn,z); printf(c1=%c,c2=%c,c1,c2); ,2

8、.3运算符和表达式,按操作功能大致可分为:算术运算符、关系运算符、逻辑运算符、赋值运算符、条件运算符、逗号运算符以及按位运算符等,2.3.1算术运算符和算术表达式,算术运算符 主要有基本运算符加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)共五种和自增(+)、自减(-)运算符共2种,算数运算符运算规则, “+、-、*”和数学中一样,直接运算。 “/”运算符在运算时,如果两个操作对象的数据类型都是整型,则为整型除法,即运算结果为整数;如果有一个操作对象为实型,则为实型除法。例如5/2=2,5.0/2=2.5。 “%”运算符要求两个操作对象必须为整型数据。运算的结果为两个操作对象相除

9、的余数,其中,运算结果的符号和%前面的操作对象的符号一致。例如5%2=1,-5%3=-2,3%5=3。 字符型数据参与数学运算时,将使用字符的ASCII码进行运算。如A+1=66。,自增和自减运算符,前置:+j,-j,功能是j的值先加(减)1,然后再进行其它运算 后置:j+,j-,功能是j先作其它运算,然后j的值再加(减)1。 例如: j=4;k=+j; 等价于 j=j+1;k=j; j=4;k=j+;等价于 k=j; j=j+1;,2.3.2赋值运算符和赋值表达式,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(/*表示将3赋值给变量a*/ a=b;/*表示

10、将变量b的值赋给变量a*/ a=b*2; /*表示将变量b*2的值赋给变量a */,赋值运算注意事项,赋值号(=)左边只能是变量,绝对不能是常数或表达式。 赋值号右边表达式类型要与左边的变量保持一致。如果不一致,则先将右边表达式的值转换为与左边变量相同的类型,然后进行赋值。 赋值运算符的结合方向为“自右向左” 多个变量可以连续赋值。 赋值符号右侧可以继续包含赋值表达式。 例如: int x,y; x=10+(y=5);,复合赋值运算符,在赋值运算符“=”之前加上其他运算符,就构成了复合赋值运算符 a+=b; 等价于a=a+b; 注意事项: 复合赋值运算符右边的表达式是一个运算“整体”,不能把它

11、们分开。如:a*=b+1等价于a=a*(b+1) 复合的赋值运算符的结合顺序为“自右向左”的。 例如: int a=2; a+=a-=a*=2; 等价于a=a+(a=a-(a=a*2); 所以最后变量a的值为0。,2.3.3关系运算符和关系表达式,关系运算符有:小于()、小于等于(=)、等于(= =)、不等于(!=)6种,关系运算符,关系运算符都是双目运算符,其结合顺序为“自左向右” 关系运算的结果为1或0,如果关系成立,结果为1,否则为0 例如: 986的结果为0,2.3.4逻辑运算符与逻辑表达式,语言中提供了3种逻辑运算符: 逻辑与运算符( !(ab) !ab int a=5,b=6,c=

12、7,d=0; ab ab | c6 a | b ab | bc,逻辑短路1,在一个或多个连续的逻辑与运算中,如果前面操作对象的结果为0,则后面的操作对象表达式不会继续求解。 例如: int a=5,b=6,c=7; ab 上式的运算结果为0,且c的值为7,逻辑短路2,在一个或多个连续的逻辑或运算中,如果前面操作对象的结果为1,则后面的操作对象表达式不会继续求解。 例如: int a=5,b=6,c=7; ba | c+ 上式的运算结果为1,且c的值为7,条件运算符,一般形式为: ?: 运算规则:先计算表达式1的值,如果它的值为真(非0值),则求解表达式2的值,并将结果作为整个表达式的值;如果它

13、的值为假(0值),则求解表达式3的值,并将结果作为整个表达式的值。 例如: a=105?10:5;/*变量a的值为10*/,逗号运算符,一般形式为: , 可以扩展为 , 运算规则: 先求解表达式1的值,然后求解表达式2的值,并将表达式n即最后一个表达式的值作为整个表达式的值。 注意:逗号运算符是C语言中运算优先级最低的运算符,低于赋值运算符 例如: x=(y=3, +y); x=4 y=4 int a=5,b=6; x=a+1,b+2 ; x=6 b=6,求字节运算符sizeof,一般形式为: sizeof(变量名)或sizeof(类型名) 例如: float a; printf(“%d,”,

14、sizeof(a); printf(“%d”,sizeof(double); 上面代码的运算结果为:4,8,2.4运算符的优先级,各类运算符的优先级顺序为:括号运算符算术运算符关系运算符逻辑运算符赋值运算符逗号运算符。 运算优先级相同的运算符,按照“自左至右”的顺序进行运算。 算术运算符的优先级顺序为:自增(减)运算乘、除、求余运算加减运算。 对于关系运算符而言,运算顺序为:运算符、=、运算符=和!=的优先级。 对于逻辑运算符而言,运算顺序:非运算算术运算与运算或运算。 对于多种运算符并存的表达式,可用圆括号改变优先级。,2.5数据类型转换,2.5.1自动类型转换 若参与运算的操作对象类型不同,则先转换成同一类型,然后进行运算。 转换按数据长度增加的方向进行,以保证精度不降低。如 int 型和 long或unsigned 型运算时,先把 int 型转成 long 或unsigned型后再进行运算;int 型和 char型运算时,先把 char 型转成 int 型后再进行运算。 所有的浮点运算都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也要先转换成 double 型

温馨提示

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

评论

0/150

提交评论