《第二讲数据类型运算符等PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第二讲数据类型运算符等PPT讲稿.ppt(57页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二讲数据类型运算符等第二讲数据类型运算符等第1页,共57页,编辑于2022年,星期二共 56 页 第 2 2 页本讲要点 数据的描述规则数据的描述规则 数据的操作规则数据的操作规则第2页,共57页,编辑于2022年,星期二共 56 页 第 3 3 页2.12.1 2.22.2 2.32.32.42.42.52.52.62.6基本符号基本符号 数据类型数据类型运算符和表达式运算符和表达式数据类型转换数据类型转换自增运算和自减运算自增运算和自减运算位运算位运算主要内容第3页,共57页,编辑于2022年,星期二共 56 页 第 4 4 页什么是语法规则?什么是语法规则?为什么要有这些规则?为什么要
2、有这些规则?数学函数方程数学函数方程常数系数系数常用函数常用函数运算符运算符 是一个数学意义上的函数表示,是一个数学意义上的函数表示,缺省了缺省了“*”。这是这是用数学用数学语言描语言描述问题述问题的方式的方式变量变量第4页,共57页,编辑于2022年,星期二共 56 页 第 5 5 页程序设计语言的基本规则包括程序设计语言的基本规则包括 常数常数 变量变量 运算符运算符 表达式表达式 函数函数 把自然语言描述问题把自然语言描述问题(算法算法)的方的方式转换为式转换为C C语言的形式表达给计算机时语言的形式表达给计算机时所要遵守的规定。所要遵守的规定。标准的写法是:第5页,共57页,编辑于20
3、22年,星期二共 56 页 第 6 6 页 常数常数 3 3、5 5和和3.6 3.6 的存放空间是否相同?的存放空间是否相同?“变量变量”a a 如何表示?如何存放?如何表示?如何存放?计算机如何知道计算机如何知道3.63.6和和a a之间的关系?之间的关系?和和sin xsin x 如何输入?如何存放?如何输入?如何存放?计算机如何识别计算机如何识别“=”=”?运算结果放在哪里?运算结果放在哪里?计算机完成上述计算,首先要计算机完成上述计算,首先要解决数据的解决数据的输入输入和和存放存放问题问题问题第6页,共57页,编辑于2022年,星期二共 56 页 第 7 7 页 程序的任务是对数据进
4、行处理,程序的任务是对数据进行处理,数据是数据是程序处理的对象程序处理的对象,而运算符是施加给这些,而运算符是施加给这些数据的操作。数据的操作。数据和运算符是表达式的基本元素数据和运算符是表达式的基本元素数据的存储数据的存储数据的操作数据的操作程序程序第7页,共57页,编辑于2022年,星期二共 56 页 第 8 8 页2.1 C2.1 C语言的基本符号语言的基本符号1.C1.C语言的基本字符集语言的基本字符集 数数 字字:0 1 2 3 4 5 6 7 8 9 字字 母母:a b c z A B C Z 运运 算算 符符:+-*/%=!=&|&|()-.!?:,;“特殊符号:特殊符号:_(下
5、划线下划线)回车回车(r)换行换行(n)制表符制表符(t)ASCIIASCII字符集字符集 基本字符集基本字符集第8页,共57页,编辑于2022年,星期二共 56 页 第 9 9 页名称名称2.C语言的标识符语言的标识符基本标识符基本标识符:变量名、函数名、文件名、:变量名、函数名、文件名、数数 组名、类型名组名、类型名标识符命名规则:标识符命名规则:字母或下划线开头,后面字母、字母或下划线开头,后面字母、下划线或数字组合下划线或数字组合call_n test39 _string1 abccall.n 39test -string1 c2.0 例例第9页,共57页,编辑于2022年,星期二共
6、56 页 第 1010页 auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeofstatic structswitch typedef union unsigned voidvolatile while保留字(保留字(3232个)个)3.C语言的关键字语言的关键字用户不能用关键字作标识符!用户不能用关键字作标识符!第10页,共57页,编辑于2022年,星期二共 56 页 第 1111页 4.常
7、量常量在程序运行中,其值保持不变的量称为常量在程序运行中,其值保持不变的量称为常量。常量的表示方法常量的表示方法:数值常量数值常量 例如:例如:10,3,2.68等等符号常量符号常量 用一个符号代表一个常量用一个符号代表一个常量 必须必须先定义先定义后使用后使用,习惯用习惯用大写大写字母表示。字母表示。例如例如:#define PI 3.1415926 main()float r,l,s;r=2;l=2*PI*r;s=PI*r*r;printf(“l=%d,s=%d”,l,s);第11页,共57页,编辑于2022年,星期二共 56 页 第 1212页 5.5.变量变量在程序执行期间其值可以改变
8、的量。在程序执行期间其值可以改变的量。有关变量的规定有关变量的规定 变量通过变量名标识,变量名和内存中的存变量通过变量名标识,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、储单元相对应。编写程序时通过变量名来存、取存储单元。取存储单元。变量必须先定义,后使用。变量必须先定义,后使用。变量名变量名memorya88 81000H1000H1002H1002H1004H1004H2552551212变量值变量值第12页,共57页,编辑于2022年,星期二共 56 页 第 1313页 命名规则命名规则:变量名由标识符表示,只能由变量名由标识符表示,只能由字母字母、数字数字和和下划线下划线
9、三种字符组成,且第一个字符必须三种字符组成,且第一个字符必须为为字母字母或或下划线下划线。例如:例如:下列标识符中,不合法的变量名有:下列标识符中,不合法的变量名有:M.D.John 12%gf 1add _ce36 age&5thclass lotus-1-2-3 cd*ef 说明:说明:*变量要变量要“先定义,后使用先定义,后使用”定义格式定义格式:类型说明符类型说明符 标识符标识符1,1,标识符标识符n n 例如:例如:int x,y,z;float a,b,c,d;*命名变量名时,建议要做到命名变量名时,建议要做到“见名知意见名知意”例如:例如:name,st_age ,xm ,nl
10、,class,sum第13页,共57页,编辑于2022年,星期二共 56 页 第 1414页 许多程序设计语言都把它们能处理的数据分成若干类,许多程序设计语言都把它们能处理的数据分成若干类,这些类就是数据类型。这些类就是数据类型。为什么要划分数据类型?为什么要划分数据类型?不同类型的数据在计算机内表示不同;不同类型的数据在计算机内表示不同;不同类型的数据能执行的运算不同;不同类型的数据能执行的运算不同;计算机能处理的问题中的数据是广义的。计算机能处理的问题中的数据是广义的。2.2 C语言数据类型第14页,共57页,编辑于2022年,星期二共 56 页 第 1515页 C语言数据类型语言数据类型
11、:整型整型 字符型字符型 单精度型单精度型 算术类型算术类型 实型(浮点型)实型(浮点型)基本类型基本类型 枚举类型枚举类型 双精度型双精度型 指针类型指针类型数据类型数据类型 数组数组 构造类型构造类型 结构体类型结构体类型 共用体类型共用体类型规定:在程序中用到的数据,必须指定数据类型。第15页,共57页,编辑于2022年,星期二共 56 页 第 1616页 整型常量的不同数值表示方法整型常量的不同数值表示方法十进制数:十进制数:0 09 9八进制数:八进制数:0 07 7,以,以0 0开头开头十六进制数:十六进制数:0 09 9,A AF/aF/af f,以,以0 0 x x或或0X0X
12、开头开头 1.1.整型常量整型常量 例如例如例如例如:100:100:100:100、-8-8-8-8、0 0 0 0;010010010010、024024024024;0 x180 x180 x180 x18、0X1F0X1F0X1F0X1F整型常量的类型整型常量的类型根据值大小默认类型根据值大小默认类型例:例:3276732767的类型是的类型是intint,3276932769类型是类型是long long。在常量后面加在常量后面加l l或或L L,表示,表示long intlong int型型 例:例:123L123L,0L0L,432l 432l 都是都是long intlong
13、int型常量型常量2.2.1 整型数据第16页,共57页,编辑于2022年,星期二共 56 页 第 1717页 整型变量的整型变量的形式形式共六种共六种基本整型基本整型短整型短整型长整型长整型无符号整型无符号整型无符号短整型无符号短整型无符号长整型无符号长整型int int short int short int long intlong intunsigned intunsigned intunsigned short unsigned short unsigned longunsigned long在内存中占字节数在内存中占字节数(与所选系统有关与所选系统有关)占内存字节数占内存字节数2
14、22 24 42 22 24 42.2.整型变量整型变量第17页,共57页,编辑于2022年,星期二共 56 页 第 1818页 整型变量的定义整型变量的定义例:int i,j;long k,m;unsigned int x,y变量有值吗?变量有值吗?格式:类型说明符格式:类型说明符 变量列表;变量列表;C中的所有变量必须先定义后使用!中的所有变量必须先定义后使用!定义变量的类型实质上是给变量分配内存定义变量的类型实质上是给变量分配内存(房间房间)第18页,共57页,编辑于2022年,星期二共 56 页 第 1919页 类型类型 类型说明符类型说明符 长度长度 数的范围数的范围基本型基本型 i
15、nt 2int 2字节字节 -32768-327683276732767短整型短整型 short 2short 2字节字节 -2-215152 21515-1-1 长整型长整型 long 4long 4字节字节 -2-231312 23131-1-1无符号整型无符号整型 unsigned 2unsigned 2字节字节 0 06553565535无符号短整型无符号短整型 unsigned short 2unsigned short 2字节字节 0 06553565535无符号长整型无符号长整型 unsigned long 4unsigned long 4字节字节 0 0(2 23232-1-1
16、)j j、m m、x x 所占存储容存储容量和取值范围?量和取值范围?第19页,共57页,编辑于2022年,星期二共 56 页 第 2020页 intint型数的表示范围:存储长度存储长度1616位二进制位二进制(2B2B)0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=1=1=3=3最大的负数?最大的负数?=-2=-21515=-32768=-32768 定点二进制补码表示定点二进制补码表示
17、占占2 2个字节存储个字节存储 数的表示范围数的表示范围:-32768-327683276732767a=2=21515-1=32767-1=32767最大的正数?最大的正数?第20页,共57页,编辑于2022年,星期二共 56 页 第 2121页 例例:main()int a,b;a=32767;b=3;c=a+b;printf(c=%dn,c);程序运行结果程序运行结果:c=-327661 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0C-32766的补码形式的补码形式第21页,共57页,编辑于2022年,星期二共 56 页 第 2222页 1.1.实型变量实型变量实型变量分实
18、型变量分类:单精度、双精度和长双精度型。类:单精度、双精度和长双精度型。2.2.2 2.2.2 实型数据实型数据实型变量的有关规则:实型变量的有关规则:类型名称类型名称类型说明符类型说明符类型说明符类型说明符长度长度长度长度取值范围取值范围取值范围取值范围有效数字有效数字有效数字有效数字单精度型单精度型单精度型单精度型floatfloatfloatfloat4 4 4 4字节字节字节字节10-10-10-10-38 38 38 38 10101010383838386-76-76-76-7位位位位双精度型双精度型双精度型双精度型doubledoubledoubledouble8 8 8 8字节
19、字节字节字节10-10-10-10-308 308 308 308 1010101030830830830815-1615-1615-1615-16位位位位长长双精度型双精度型双精度型双精度型long doubledoubledoubledouble16字节字节 10101010-4932-4932-4932-4932 10101010493249324932493218-19位位位位例例例例:float a,b;float a,b;double c,d;double c,d;long double e,f;long double e,f;第22页,共57页,编辑于2022年,星期二共 56
20、页 第 2323页 2 2-23-23=|=|尾数尾数|=1-2|=1-2-23-23 二进制二进制二进制二进制 7 7 7 7位位位位 二进制二进制二进制二进制 23232323位位位位单精度实型单精度实型单精度实型单精度实型尾数尾数阶码阶码阶符阶符数符数符什么是数的范围?什么是有效位?什么是数的范围?什么是有效位?1 1个字节个字节 3 3个字节个字节 例如例如 十进制实型数据十进制实型数据0.123456 10-2在计算机中的存放形在计算机中的存放形式为:式为:+0.123456 数符数符指数符号指数符号 指数指数 -2小数小数小数部分小数部分指数部分指数部分第23页,共57页,编辑于2
21、022年,星期二共 56 页 第 2424页 其中,小数部分一般都采用规格化的数据形式,即:小其中,小数部分一般都采用规格化的数据形式,即:小数点放在第一个有效数字前面,使小数部分数点放在第一个有效数字前面,使小数部分放小于放小于1的纯小数。的纯小数。单精度实数单精度实数的精度取决于小数部分的的精度取决于小数部分的2323位二进制数位所能表达的数值位数,将其位二进制数位所能表达的数值位数,将其转换为十进制,最多可表示转换为十进制,最多可表示7 7位十进制数字,位十进制数字,所以单精度实数的有效位是所以单精度实数的有效位是7 7位。位。双精度型双精度型用于扩大存储位数,目的是增用于扩大存储位数,
22、目的是增加实数的长度,减少累积误差,改善计算加实数的长度,减少累积误差,改善计算精度。精度。第24页,共57页,编辑于2022年,星期二共 56 页 第 2525页 2.实型常量实型常量 两种表示形式:两种表示形式:十进制数形式:十进制数形式:由数字和小数点及正负号组成。由数字和小数点及正负号组成。(注意:必须有小数点注意:必须有小数点)例如:例如:23.678 .678 23.23.678 .678 23.指数形式:指数形式:由数字、小数点、字母由数字、小数点、字母e或或E及正负号组成。及正负号组成。(注:注:e或或E之前必须有数字,且后指数必须为整数之前必须有数字,且后指数必须为整数)例如
23、:例如:3.5E-5 2e3 3.5E-5 2e3 E2 3.6e3.5 .e6 e E2 3.6e3.5 .e6 e 不合法!3.5乘以10的-5次方,即0.0000352乘以10的3次方,即2000第25页,共57页,编辑于2022年,星期二共 56 页 第 2626页 l 实型常量的类型实型常量的类型 C C语言中语言中,实型常量一般作为双精度来处理。实型常量一般作为双精度来处理。一个实型常量不分一个实型常量不分floatfloat和和doubledouble型,可以赋给一个型,可以赋给一个floatfloat型或型或 double double型变量,并根据变量的类型截取型变量,并根据
24、变量的类型截取实型常量中相应的有效位数字。实型常量中相应的有效位数字。例如:例如:main()main()float a;float a;double b;double b;a=1234.111111;a=1234.111111;b=1234.111111;b=1234.111111;printf(“a=%f,b=%f”,a,b);printf(“a=%f,b=%f”,a,b);运行结果?a=1234.111084,b=1234.111111a=1234.111084,b=1234.111111第26页,共57页,编辑于2022年,星期二共 56 页 第 2727页 最小正数:最小正数:101
25、0-38-38 小于该数时处理为小于该数时处理为0 0 下溢下溢最大正数:最大正数:10103838 大于该数时提示大于该数时提示出错出错 上溢上溢 实型数在计算机内部都按指数形式存放实型数在计算机内部都按指数形式存放 实型数常数不区分单精度和双精度实型数常数不区分单精度和双精度 数的存储结构和精度与计算机硬件特性有关数的存储结构和精度与计算机硬件特性有关超出表示范围的数机器如何处理?超出表示范围的数机器如何处理?第27页,共57页,编辑于2022年,星期二共 56 页 第 2828页 2.2.3 字符型数据1.字符常量字符常量 用单引号括起来的一个字符(用单引号括起来的一个字符(只能包含一个
26、字符)只能包含一个字符)例如:例如:a A$!abc、“a”注注:a与与A是是 不同的字符常量。不同的字符常量。第28页,共57页,编辑于2022年,星期二共 56 页 第 2929页 转义字符:转义字符:转义字符的概念:转义字符的概念:是一种特殊的字符常量,是一种特殊的字符常量,用于表示常用的但却难以用一般形式表示的用于表示常用的但却难以用一般形式表示的不可显示字符。不可显示字符。转义字符的表示转义字符的表示:用一个转义标识符用一个转义标识符“”开开头,后面是需要的转义字符。常用的转义字符头,后面是需要的转义字符。常用的转义字符序列的字符常量见表:序列的字符常量见表:转义字符是特殊形式的字符
27、常量转义字符是特殊形式的字符常量第29页,共57页,编辑于2022年,星期二共 56 页 第 3030页 转义字符表:转义字符表:转义字符转义字符 功功 能能 n 换行换行 v 垂直制表垂直制表 b 退格退格 r 回车回车 f 走纸换页走纸换页 t 跳到下一个制表位跳到下一个制表位 反斜线字符反斜线字符 单引号字符单引号字符“双引号字符双引号字符 ddd 至位八进制数表示的字符至位八进制数表示的字符 xdd 至位十六进制数表示的字符至位十六进制数表示的字符转义符“”表示将其后的字符原来的含义进行转换,变成某种另外特殊约定的含义。第30页,共57页,编辑于2022年,星期二共 56 页 第 31
28、31页 例:例:main()printf(“ctlanguagsberCn”);printf(“istusef165x6c”);屏幕输出:屏幕输出:C languageis useful第31页,共57页,编辑于2022年,星期二共 56 页 第 3232页 定义形式定义形式:char占存储空间占存储空间:一个变量一个字节一个变量一个字节2.字符变量字符变量一个字符变量只能一个字符变量只能包含一个字符包含一个字符main()main()char c;char c;c=c=c c;printf(printf(“%c%c”,c);,c);运行结果:运行结果:C C题目中有几个题目中有几个c c,哪
29、些是等价的?哪些是等价的?例:例:第32页,共57页,编辑于2022年,星期二共 56 页 第 3333页 a a的的ASCIIASCII值为值为97 97 内存中存储形式内存中存储形式0 1 1 0 0 0 0 1例:例:ASCIIASCIIASCIIASCII码字符码字符码字符码字符a a、A A、1 1 存储为:存储为:存储为:存储为:9797、65656565、494949490 1 1 0 0 0 0 1在在ASCII范围以内范围以内,整型数据整型数据与字符型数据可以通用与字符型数据可以通用整型数整型数97 97 内存中存储形式内存中存储形式0 0 0 0 0 0 0 0第33页,共
30、57页,编辑于2022年,星期二共 56 页 第 3434页 main()char a;int b;a=A;b=a+25;printf(“%c,%d,%c,%dn”,a,a,b,b);例:例:计算字符计算字符A与整型数据与整型数据25的和。的和。程序运行结果:程序运行结果:A,65,Z,90第34页,共57页,编辑于2022年,星期二共 56 页 第 3535页 3.3.字符串常量字符串常量字符串常量是字符串常量是用用双引号双引号括起来的一个或多个字括起来的一个或多个字符。符。n n个字符组成的字符串常量个字符组成的字符串常量,占内容空间为占内容空间为 n+1 n+1 个字节。个字节。c ch
31、 hi in na a00字符串结束标记字符串结束标记“空空”字符字符例:例:a a 串长串长 1 1 This is C stringThis is C string 串长串长1616 (空格)(空格)串长串长1 1 “”(不含空格)(不含空格)串长串长0 0第35页,共57页,编辑于2022年,星期二共 56 页 第 3636页 字符常量和字符串常量的区别:字符常量和字符串常量的区别:在程序中,可以用字符常量或字符串常量表示单个字符,在程序中,可以用字符常量或字符串常量表示单个字符,例如例如 aa,或,或“a”a”,两者的区别如下:,两者的区别如下:(1 1)字符串字符串aa在内存中占在内
32、存中占2 2个字节,而字符个字节,而字符a a 在内在内存中占存中占1 1个字节。个字节。字符串字符串a a 字符字符aa(2 2)不能将字符串赋给一个字符变量。不能将字符串赋给一个字符变量。例:例:char ch1,ch2;char ch1,ch2;ch1=a;/*ch1=a;/*正确正确*/ch2=a;/*ch2=a;/*错误错误*/a0a第36页,共57页,编辑于2022年,星期二共 56 页 第 3737页 练习:练习:1.1.以下不合法的变量名为:以下不合法的变量名为:(A)_123 (B)IF (C)e4 (D)float(A)_123 (B)IF (C)e4 (D)float2.
33、2.指出下列字符串的长度及输出内容:指出下列字符串的长度及输出内容:“054 054”“x56x56”cta cta”“ntbabntbab”3 输出输出 ,6输出输出V”c a6 输出输出 ab十进制为86对应”V”“w110goodw110good”占几个字节占几个字节?3 3字节字节 输出输出 w w 字符串结束标记字符串结束标记第37页,共57页,编辑于2022年,星期二共 56 页 第 3838页 在定义变量时为其指定值在定义变量时为其指定值方法方法:int a=5;int a=5;int a,b,c=5;int a,b,c=5;int a5,b=5,c=5;int a5,b=5,c
34、=5;int a=b=c=5;int a=b=c=5;1.定义变量的同时为定义变量的同时为其初始化其初始化2.初始化不是在编初始化不是在编译时进行译时进行,而是在程而是在程序运行时完成的序运行时完成的2.2.4 2.2.4 变量的初始化变量的初始化初始化初始化第38页,共57页,编辑于2022年,星期二共 56 页 第 3939页 2.3 2.3 运算符和表达式运算符和表达式运算符运算符:描述各种操作的符号。描述各种操作的符号。2.3.12.3.1算术运算符和算术表达式算术运算符和算术表达式1.1.算术运算符算术运算符 2.2.算术表达式:算术表达式:由算术运算符、常数、变量、函数和圆括号组成
35、由算术运算符、常数、变量、函数和圆括号组成 例如:例如:a+b+a*b/c+2.83.优先级:优先级:高于高于4.结合性:结合性:“左结合性左结合性”或称为或称为“自左至右的结合方向自左至右的结合方向”即运算对象先与即运算对象先与左边的运算符结合。左边的运算符结合。例如:例如:a-b+c注意注意:是除法运算符。当两个整数相除时为整除。是除法运算符。当两个整数相除时为整除。9/2=4;-9/2=-4;(若有一个是负数若有一个是负数,采取向零取整采取向零取整)%是取余数运算符是取余数运算符,只能作用于两个整数。运算结果的符号只能作用于两个整数。运算结果的符号与被除数的符号一致。与被除数的符号一致。
36、9%2=1;-9%2=-1;9%-2=1;第39页,共57页,编辑于2022年,星期二共 56 页 第 4040页 符号符号说明说明优先级优先级结合性结合性算术表达式算术表达式+-单目取正单目取正单目取负单目取负1414从右到左从右到左a=+8b=-a*/%乘乘除除取余取余131313从左到右从左到右a=12*5.5b=14/6.5c=12%5+-加加减减1212从左到右从左到右a=15+8.5b=18-8.5基本算术运算符基本算术运算符第40页,共57页,编辑于2022年,星期二共 56 页 第 4141页 运算符属性:运算符属性:(1)(1)优先级优先级 当若干个运算符同时出现在表达式中时
37、,当若干个运算符同时出现在表达式中时,优先级规定了运算的先后优先级规定了运算的先后次序次序。优先级有。优先级有1515级。级。C C语言把圆括号作为运算符,规定它的优先级最高语言把圆括号作为运算符,规定它的优先级最高(15(15级级),从而保,从而保证优先运算圆括号内的式子,逗号运算符的级别最低,规定为证优先运算圆括号内的式子,逗号运算符的级别最低,规定为1 1级。级。(2)(2)结合性结合性 当若干个具有相同优先级的运算符相邻出现在表达式中时,当若干个具有相同优先级的运算符相邻出现在表达式中时,结合结合性规定了运算的先后次序性规定了运算的先后次序。分为。分为“从左到右从左到右”和和“从右到左
38、从右到左”两个结合两个结合方向。方向。大多数运算符的结合方向为大多数运算符的结合方向为“从左到右从左到右”;单目运算符、赋值运算符和条件运算符的结合方向单目运算符、赋值运算符和条件运算符的结合方向”从右到左从右到左”(单目运算符是指作用于一个操作对象的运算符(单目运算符是指作用于一个操作对象的运算符)。第41页,共57页,编辑于2022年,星期二共 56 页 第 4242页 例例:将下列数学表达式将下列数学表达式:写成符合写成符合C语语言言规则规则的表达式如下的表达式如下:(a+b+c)/(sqrt(a)+b*(sin(x)+sin(y)+sin(z)其中其中sqrt(a)和和sin(x)、s
39、in(y)、sin(z)都是都是数学函数的引用,表达式中用了三层括号,数学函数的引用,表达式中用了三层括号,以保证表达式的运算顺序。以保证表达式的运算顺序。第42页,共57页,编辑于2022年,星期二共 56 页 第 4343页 2.3.2 赋值运算符和赋值表达式赋值运算符和赋值表达式1.1.一般赋值运算符:一般赋值运算符:=赋值表达式:由赋值运算符将一个变量和一个表达式连赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。接起来的式子。形式:变量名形式:变量名=常量或表达式常量或表达式作用:将右边常量或表达式的值赋给左边的变量。作用:将右边常量或表达式的值赋给左边的变量。例:例:a
40、=3;b=c+d;a=3;b=c+d;说明:说明:赋值后,原来左边的值被右边表达式的值替换;赋值后,原来左边的值被右边表达式的值替换;如果右边表达式的值的类型与左边变量的类型不一如果右边表达式的值的类型与左边变量的类型不一 致,以左边致,以左边变量的类型为准,将表达式值的类型转换为左边变变量的类型为准,将表达式值的类型转换为左边变 量的类型。量的类型。结合方向结合方向“从右向左从右向左”。例:例:x=y=a+b;第43页,共57页,编辑于2022年,星期二共 56 页 第 4444页 例:main()int a;double b=3.5;a=b+2.1;printf(“a=%d”,a);第44
41、页,共57页,编辑于2022年,星期二共 56 页 第 4545页 2.复合赋值运算符复合赋值运算符复合赋值运算符:在赋值符复合赋值运算符:在赋值符“=”之前加上其它运算符之前加上其它运算符共有共有10种复合赋值运算符种复合赋值运算符:+=,=,&,=,|=例:例:int a=1,b=2,c=2;double x=1.5,y=2,z=2;c*=a-b;c的值?的值?2*(1-2)=-2 int型型 z-=x+y;z的值?的值?2.0-(1.5+2.0)=-1.5 double型型第45页,共57页,编辑于2022年,星期二共 56 页 第 4646页 2.3.3 2.3.3 2.3.3 2.3
42、.3 逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符和逗号表达式1.1.逗号运算符:即逗号运算符:即“,”优先级:所有运算符中级别优先级:所有运算符中级别最低的运算符最低的运算符(1515)。)。2.2.逗号表达式逗号表达式 形式:形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式n n 求解过程:顺次求解表达式求解过程:顺次求解表达式1 1,表达式,表达式22 最后求解表达式最后求解表达式n n。逗号表达式的值为表达式逗号表达式的值为表达式n n的值。的值。结合性结合性:左结合左结合例如:例如:a=3*5,a*4a=3*5,a*4 a=3*5,a*4
43、,a+5 a=3*5,a*4,a+5 x=(a=4%3,a+1,a*10)x=(a=4%3,a+1,a*10)602010第46页,共57页,编辑于2022年,星期二共 56 页 第 4747页 2.4 2.4 数据类型转换数据类型转换转换规则:转换规则:int unsigned int long int unsigned long int double short,char float(1)float 型数据一律转换成型数据一律转换成double 型数据。型数据。(2)char 和和short int 型数据一律转换成型数据一律转换成 int 型数据型数据 以上两条转换原则说明:即使两个操作
44、数类型相同,但只要以上两条转换原则说明:即使两个操作数类型相同,但只要它们同属它们同属 char ,short int 或或 float 类型,则转换一定发生。类型,则转换一定发生。整型、实型和字符型可以混合运算;一般类型数据先转换为标准型;不整型、实型和字符型可以混合运算;一般类型数据先转换为标准型;不同类型的要先转换为相同类型。同类型的要先转换为相同类型。形式:系统自动进行和形式:系统自动进行和 强制类型转换两种。强制类型转换两种。竖直方向的转换表示那些一定要发竖直方向的转换表示那些一定要发生的转换;横向表示操作数的类型生的转换;横向表示操作数的类型转换的方向。转换的方向。2.4.1 2.
45、4.1 2.4.1 2.4.1 不同数据类型的数据间的混合运算不同数据类型的数据间的混合运算不同数据类型的数据间的混合运算不同数据类型的数据间的混合运算第47页,共57页,编辑于2022年,星期二共 56 页 第 4848页 若两个操作数类型不同,则按下列顺序选取第一个适用的规则:若两个操作数类型不同,则按下列顺序选取第一个适用的规则:(3)(3)两个操作数之一为两个操作数之一为double double 型数据,则另一个转换成型数据,则另一个转换成 double double 型型(4)(4)两个操作数之一为两个操作数之一为 unsigned long int unsigned long i
46、nt 型数据,则另一个转换型数据,则另一个转换成成unsigned long int unsigned long int 型数据型数据(5)(5)两个操作数之一为两个操作数之一为 long int long int 型数据,则另一个转换成型数据,则另一个转换成 long int long int 型数据型数据(6)(6)两个操作数之一为两个操作数之一为 unsigned int unsigned int 型数据,则另一个转换成型数据,则另一个转换成 unsigned int unsigned int 型数据型数据例:若有:例:若有:int i;float f;double d;long e;i
47、nt i;float f;double d;long e;试判断表达式试判断表达式 3+b+i*f-d/e 3+b+i*f-d/e 的类型的类型double型优先级低的向优先级高的转换优先级低的向优先级高的转换规则规则:第48页,共57页,编辑于2022年,星期二共 56 页 第 4949页 2.4.2 强制类型转换强制类型转换 将指定表达式的值转换为指定类型将指定表达式的值转换为指定类型.形式:(类型名)(表达式)形式:(类型名)(表达式)例如:例如:(double)(a+b)(double)(a+b)说明:说明:()表达式应用括号括起表达式应用括号括起例如:例如:(int)(x+y);(i
48、nt)x+y;()在强制类型转换时,得到一个所需类型的中间变量,在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。原来变量类型未发生变化。例如:例如:float x=8.6 ;int y;y=(int)x;第49页,共57页,编辑于2022年,星期二共 56 页 第 5050页 2.5 自增、自减运算符(、)作用:作用:使变量的值增或减,如:使变量的值增或减,如:i,i (使用之(使用之前前,先使,先使i的值加(减)的值加(减)1)i,i (使用之(使用之后后,使,使i的值加(减)的值加(减)1)+i 先执行先执行i=i+1,再使用,再使用i的值的值 i+先使用先使用i的值
49、,再执行的值,再执行i=i+1例如:例如:int a=1,b;b=+a ;b=a+;说明:说明:(1 1)+、-为单目运算符为单目运算符(2 2)+、只能用于变量,而不能用于常量或表达式。、只能用于变量,而不能用于常量或表达式。例如:例如:10+10+,(,(x+y)+x+y)+,+a,b+,+a,b+中合法的为:中合法的为:(3 3)自增、自减运算符为)自增、自减运算符为右结合性右结合性(即自右至左)。(即自右至左)。例如:例如:a+a+(a+a+)第50页,共57页,编辑于2022年,星期二共 56 页 第 5151页 i=2;k=i+i+i+;i=2;k=+i+(+i)+(+i);自增之
50、后再相加执行完分号执行完分号再自增再自增i=?k=?i=?k=?算一算?第51页,共57页,编辑于2022年,星期二共 56 页 第 5252页 2.6 2.6 位运算位运算 位运算是针对二进制数的运算,通常只适用于整数数位运算是针对二进制数的运算,通常只适用于整数数据。据。C C语言中提供的位运算符有:语言中提供的位运算符有:、&、1.1.按位取反运算符按位取反运算符形式:形式:A A功能:把功能:把A A的各位都取反,(即的各位都取反,(即0 0变变1 1,1 1变变0 0)例如:例如:int A=179int A=179A0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1A