
c语言大学实用教程第2章数据类型运算符和表达式新.ppt
82页溜倪霞患圾坯综烙会姆萨绍雨界为颅铆锤驶柜向驶底摧绩踌均托敷稀钟挪c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新第第第第2 2 2 2章章章章 数据数据数据数据类型、运算符类型、运算符类型、运算符类型、运算符与表达式与表达式与表达式与表达式贺乾亦绷款拴答首燃吸门菇哄叁凶纷掠帖劣薄侗遗蹿肆育铀挣润净熏菠澎c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/20242内容提要内容提要内容提要内容提要基本数据类型;基本数据类型;常量和变量;常量和变量; 标识符命名;标识符命名; 常用运算符和表达式;常用运算符和表达式;运算符的优先级与结合性运算符的优先级与结合性 色勺碘胆虹锌酿愤补筹隋烧燥券琐宅骚威转赋央凡臣拘巢踌这戴搂式除苛c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/20243例例例例2.12.1:一个简单的:一个简单的:一个简单的:一个简单的C C程序例子程序例子程序例子程序例子 #include
注意:区分大小写注意:区分大小写注意:区分大小写Sum Sum sum sum 是不同的标识符是不同的标识符是不同的标识符是不同的标识符合法合法合法合法不合法不合法不合法不合法绞堑狐嚣狄报谱胁瘟吭阮胳憨瞬阀绕性净妥文薄敛揪姑瞳泅屿垦闺直毁围c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202472.2 C2.2 C程序常见符号分类程序常见符号分类程序常见符号分类程序常见符号分类 运算符(运算符(OperatorOperator))–3434种,详见附录种,详见附录D D 分隔符(分隔符(分隔符(分隔符(SeparatorSeparatorSeparatorSeparator)))) –空格、回车空格、回车空格、回车空格、回车/ / / /换行、逗号等换行、逗号等换行、逗号等换行、逗号等 其它符号其它符号其它符号其它符号 –大花括号大花括号大花括号大花括号“{”“{”“{”“{”和和和和“}”“}”“}”“}”通常用于标识函数体或者一个语通常用于标识函数体或者一个语通常用于标识函数体或者一个语通常用于标识函数体或者一个语句块句块句块句块 –“/*”“/*”“/*”“/*”和和和和“*/”“*/”“*/”“*/”是程序注释所需的定界符是程序注释所需的定界符是程序注释所需的定界符是程序注释所需的定界符 数据(数据(数据(数据(DataDataDataData))))–变量(变量(变量(变量(VariableVariableVariableVariable))))–常量(常量(常量(常量(ConstantConstantConstantConstant)))) 折骸敢虏脾内浚龙铱璃免摹恶冰蓉成好烘倍洞势襟婚吹尽贱垛嵌春崖醚泣c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202482.3 2.3 数据类型(数据类型(数据类型(数据类型(Data TypeData Type))))数据是操作的对象,数据类型是指数据数据是操作的对象,数据类型是指数据的内在表现形式(代码、存储、运算)的内在表现形式(代码、存储、运算)数据为什么要区分类型?数据为什么要区分类型?不同类型的数据代表不同的不同类型的数据代表不同的–数据存储形式数据存储形式数据存储形式数据存储形式–合法的取值范围合法的取值范围合法的取值范围合法的取值范围–占用内存空间大小占用内存空间大小占用内存空间大小占用内存空间大小–可参与的运算种类可参与的运算种类可参与的运算种类可参与的运算种类 渊劲吴攒贩扩拒膛皖勤化赫悉汝侩坍崖执廓罗脆西幌椅铺冗怔碎徐瑰抄号c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/20249 2.3 2.3 数据类型(数据类型(数据类型(数据类型(Data TypeData Type))))数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型单精度实型单精度实型双精度实型双精度实型基本整型基本整型长整型长整型短整型短整型无符号整型无符号整型intintlong intlong intshort intshort intunsigned intunsigned intfloatfloatdoubledouble暮孩讼周盔馁苛杭樊各鼎阁什扣渝泣琅愧桂笑摸弧联刻砒霹岳杆材疚沉屋c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202410基本数据类型基本数据类型基本数据类型基本数据类型int–整数,在目前绝大多数机器上占整数,在目前绝大多数机器上占4 4个字节。
个字节–TC2TC2中是中是2 2个字节个字节–VCVC中是中是4 4个字节个字节 float–单精度浮点数,一般是单精度浮点数,一般是单精度浮点数,一般是单精度浮点数,一般是4 4 4 4个字节长个字节长个字节长个字节长 double–双精度浮点数,一般是双精度浮点数,一般是双精度浮点数,一般是双精度浮点数,一般是8 8 8 8个字节长个字节长个字节长个字节长 char–字符,一般是字符,一般是字符,一般是字符,一般是1 1 1 1个字节长个字节长个字节长个字节长–用来表示用来表示用来表示用来表示256256256256个个个个ASCIIASCIIASCIIASCII字符,或者字符,或者字符,或者字符,或者0~2550~2550~2550~255的整数的整数的整数的整数驹服崭怖桨帘铣琳哮躇奋博尔竹镁之管婶云藕掖如豫蜀侦税喉落茅悬淮尧c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024112.3.32.3.3数据类型修饰符数据类型修饰符数据类型修饰符数据类型修饰符short–short int,短整数,一般,短整数,一般2 2个字节长。
通常简写为个字节长通常简写为short longlong–longlong intint,长整数,一般是,长整数,一般是,长整数,一般是,长整数,一般是4 4 4 4个字节长通常简写为个字节长通常简写为个字节长通常简写为个字节长通常简写为longlong–longlong doubledouble,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是,长双精度(高精度)浮点数,一般是10101010个字节长个字节长个字节长个字节长 signedsigned–用来修饰用来修饰用来修饰用来修饰charchar、、、、intint、、、、shortshort和和和和longlong,说明他们是,说明他们是,说明他们是,说明他们是有符有符有符有符号号号号的整数(正整数、的整数(正整数、的整数(正整数、的整数(正整数、0 0 0 0和负整数)和负整数)和负整数)和负整数)一般缺省都是有符一般缺省都是有符号的号的,所以这个修饰符通常省略,所以这个修饰符通常省略,所以这个修饰符通常省略,所以这个修饰符通常省略 unsignedunsigned–用来修饰用来修饰用来修饰用来修饰charchar、、、、intint、、、、shortshort和和和和longlong,说明他们是,说明他们是,说明他们是,说明他们是无符无符无符无符号号号号的整数(正整数和的整数(正整数和的整数(正整数和的整数(正整数和0 0 0 0)))) 数据类型修饰符单独使用时,系统默认为数据类型修饰符单独使用时,系统默认为数据类型修饰符单独使用时,系统默认为数据类型修饰符单独使用时,系统默认为intint型型型型讣债圃善理昌本番华葬呻尤恩李圃总截炮从寄都问臀吮遭顺槐壳佬周奠疡c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024122.4 2.4 常量常量常量常量常量:在程序中保持固定类型和固定值常量:在程序中保持固定类型和固定值的数据的数据常量根据表示形式区分为不同的类型常量根据表示形式区分为不同的类型–1212,,12.312.3,,’a’’a’整型常量、实型常量、字符常量、字符整型常量、实型常量、字符常量、字符串常量、枚举常量串常量、枚举常量宏常量(符号常量)宏常量(符号常量)亚缮沃扮显睦彼蒜狗泽谊勘腑纲七孤迈抢压览所梨圣钧押丽愈爪疤管救番c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024132.4.1 2.4.1 整型数据:整型常量整型数据:整型常量整型数据:整型常量整型数据:整型常量整型常量整型常量–十进制十进制十进制十进制–八进制:八进制:八进制:八进制:0-70-70-70-7,最高位以,最高位以,最高位以,最高位以0 0 0 0为引导符为引导符为引导符为引导符–十六进制:十六进制:十六进制:十六进制:0-90-90-90-9,,,,a-fa-fa-fa-f((((A-FA-FA-FA-F),以),以),以),以0x0x0x0x为引导符为引导符为引导符为引导符#include
符号常量的值在其即以标识符形式出现的常量符号常量的值在其即以标识符形式出现的常量符号常量的值在其即以标识符形式出现的常量符号常量的值在其作用域作用域作用域作用域( ( ( (在本例中为主函数在本例中为主函数在本例中为主函数在本例中为主函数) ) ) )内不能改变内不能改变内不能改变内不能改变, , , ,也不能再也不能再也不能再也不能再被赋值 说明:说明:说明:说明:如再用赋值语句给如再用赋值语句给如再用赋值语句给如再用赋值语句给PIPIPIPI赋值是错误的赋值是错误的赋值是错误的赋值是错误的 PI=2; /* PI=2; /* PI=2; /* PI=2; /* 错误,不能给符号常量赋值错误,不能给符号常量赋值错误,不能给符号常量赋值错误,不能给符号常量赋值*/*/*/*/运行结果:运行结果:运行结果:运行结果:area=314.100000area=314.100000area=314.100000area=314.100000均揩汤貉啄白继错龄描注堡佯艾灾鸿免豺疗桅苞惰臀芹孙诫拘勇岳候棘侨c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024222.5 2.5 变量变量变量变量 p24 p24变量:值可以改变变量:值可以改变–用标识符来表示用标识符来表示变量名变量名–在内存中占用一定的存储单元在内存中占用一定的存储单元 变量变量 变量名变量名 存储单元存储单元 变量的定义:变量的定义:–类型关键字类型关键字类型关键字类型关键字 变量名变量名变量名变量名1[1[1[1[,变量名,变量名,变量名,变量名2 2 2 2,,,,…]…]…]…];;;;–先定义,后使用先定义,后使用先定义,后使用先定义,后使用–注意变量名的命名规则注意变量名的命名规则注意变量名的命名规则注意变量名的命名规则表示表示表示表示值值值值int t;int t;char c1,c2,c3;char c1,c2,c3;float f1;float f1;double y1,y2;double y1,y2;鸿急怀羌黔掀掖墒场渔介汞卢好阴仗皱肛报侧切极囤认艘逝仲聪虐贪远玲c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024232.5.1 2.5.1 整型数据:整型变量整型数据:整型变量整型数据:整型变量整型数据:整型变量整型变量整型变量根据其取值范围的不同分为:根据其取值范围的不同分为:–基本整型基本整型 int int ((2 2字节或字节或4 4字节,与环境有关)字节,与环境有关)–短整型短整型 short int short int ((2 2))–长整型长整型 long int long int ((4 4)) 根据其有无符号分为:根据其有无符号分为:根据其有无符号分为:根据其有无符号分为:–有符号数有符号数有符号数有符号数 singned singned singned singned 可省略可省略可省略可省略–无符号数无符号数无符号数无符号数 unsigned unsigned unsigned unsigned房廉爪傀值讹莲榜拈死拐寐摄搀爵温耻燥锻蜜颠羚潞睬恶十农凛些募孜搔c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024242.5.1 2.5.1 整型数据:整型变量整型数据:整型变量整型数据:整型变量整型数据:整型变量整型变量的定义整型变量的定义例如例如: : int a,bint a,b(指定变量a、b为整型)(指定变量a、b为整型) unsigned short c,d;unsigned short c,d;(指定变量c、(指定变量c、d为无符号短整型)d为无符号短整型) long e,f;long e,f;( (指定变量e、f为长整型)指定变量e、f为长整型)闷琉漂英罗伶幻媒梳拎拜卧抠查枚庸教墟逗嘲阀句摹诡客胶打讹审满倡牡c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202425有符号整型有符号整型–基本整型:基本整型:intint说明,说明,——int i——int i;;–短整型:短整型:short intshort int或者或者shortshort说明,说明,2 2个字节个字节————short sumshort sum;;–长整型:长整型:long intlong int或或longlong说明,说明,4 4个字节个字节——long ——long i i,,totaltotal;; 无符号整型无符号整型无符号整型无符号整型–无符号整型:以无符号整型:以无符号整型:以无符号整型:以unsigned intunsigned intunsigned intunsigned int或或或或unsignedunsignedunsignedunsigned说明,说明,说明,说明, 2 2 2 2个字节个字节个字节个字节——unsigned i——unsigned i——unsigned i——unsigned i;;;;–无符号短整型:以无符号短整型:以无符号短整型:以无符号短整型:以unsigned shortunsigned shortunsigned shortunsigned short说明,说明,说明,说明, 2 2 2 2个字节个字节个字节个字节——unsigned short j——unsigned short j——unsigned short j——unsigned short j;;;;–无符号长整型:以无符号长整型:以无符号长整型:以无符号长整型:以unsigned longunsigned longunsigned longunsigned long说明,说明,说明,说明, 4 4 4 4个字节个字节个字节个字节——unsigned long k——unsigned long k——unsigned long k——unsigned long k;;;;码雾钒摔户纷存月兽萄官旋坊皑执熔蹦贿姆浮钝彝玉抹钒闪蝎疡珠洒囤厂c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新 •整数类型的有关数据: 类型类型类型类型 类型说明符类型说明符类型说明符类型说明符 长度长度长度长度 数的范围数的范围数的范围数的范围 基本型基本型基本型基本型 int 2/4 int 2/4 int 2/4 int 2/4字节字节字节字节 短整型短整型短整型短整型 short 2 short 2 short 2 short 2字节字节字节字节 -32768 -32768 -32768 -32768~~~~32767327673276732767 长整型长整型长整型长整型 long 4 long 4 long 4 long 4字节字节字节字节 -2 -2 -2 -231313131~~~~2 2 2 231313131-1-1-1-1 无符号整型无符号整型无符号整型无符号整型 unsigned 2 unsigned 2 unsigned 2 unsigned 2字节字节字节字节 0 0 0 0~~~~65535655356553565535 无符号短整型无符号短整型无符号短整型无符号短整型 unsigned short 2 unsigned short 2 unsigned short 2 unsigned short 2字节字节字节字节 0 0 0 0~~~~65535655356553565535 无符号长整型无符号长整型无符号长整型无符号长整型 unsigned long 4 unsigned long 4 unsigned long 4 unsigned long 4字节字节字节字节 0 0 0 0~(~(~(~(2 2 2 232323232-1-1-1-1))))林奇路亚零举土忱硒雨苹绪派随杉言澎翱缄腮级冤味帝嘶抖碳陌诬袱篇袭c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202427例例3 整型变量的定义与使用整型变量的定义与使用#include
遇此情况就发生的数遇此情况就发生的数遇此情况就发生的数遇此情况就发生““““溢出溢出溢出溢出””””运行结果:运行结果:运行结果:运行结果: 32767,-3276832767,-3276832767,-3276832767,-32768品在梅氮袭厨甩喇灿羔姻服忘彰祁条洗焚共诺诬唆僵器课肋点疫宾乙昏披c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024292.5.2 2.5.2 实型数据:实型变量实型数据:实型变量实型数据:实型变量实型数据:实型变量实型变量:取值范围与值的精度和机器实型变量:取值范围与值的精度和机器类型有关类型有关单精度单精度floatfloat型:型:4 4个字节个字节双精度双精度doubledouble型:型:8 8个字节个字节脸滴翌域啊缘附兽溃拽昆惟揭评件铡虫庐蜘仓窃涩陷骆旱岛翁婆昆盗赫脾c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202430实型数据的内存存储格式实型数据的内存存储格式实型数据的内存存储格式实型数据的内存存储格式 p26 p26虽然实数有两种形式,但在内存中都是虽然实数有两种形式,但在内存中都是指数形式存放。
指数形式存放阶码符号阶码符号阶码数值阶码数值尾数符号尾数符号尾数数值尾数数值 范围范围范围范围 精度精度精度精度出堤研叹秩抿擂汇稠唱疫观阀亡帚护踪斌凝隅捻宦邹族蜕核绿等诵婚想竟c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202431实型变量的舍入误差实型变量的舍入误差实型变量的舍入误差实型变量的舍入误差 p31 p31若数据超过有效位,则被舍去,因此可若数据超过有效位,则被舍去,因此可能产生误差能产生误差阶码符号阶码符号阶码数值阶码数值尾数符号尾数符号尾数数值尾数数值 范围范围范围范围 精度精度精度精度词娱惹珐岳铅倔上雏兑琉埔蜜浮态咒陇乖写独贡怒药察谊祟娠谢衣箕覆侩c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202432例例5 浮点型数据的舍入误差浮点型数据的舍入误差#include
应当避后面的数字是无意义的,并不准确地表示该数应当避后面的数字是无意义的,并不准确地表示该数应当避后面的数字是无意义的,并不准确地表示该数应当避免将一个很大的数和一个很小的数直接相加或相减,否免将一个很大的数和一个很小的数直接相加或相减,否免将一个很大的数和一个很小的数直接相加或相减,否免将一个很大的数和一个很小的数直接相加或相减,否则就会则就会则就会则就会““““丢失丢失丢失丢失””””小的数小的数小的数小的数运行结果:运行结果:运行结果:运行结果: 掘强嫂唆蓄缓际逝魄跌廉驰国怂园处乡巍缅蛾畴办朴浊条漓彼椒消翅蓝州c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024332.5.3 2.5.3 字符型数据:字符变量字符型数据:字符变量字符型数据:字符变量字符型数据:字符变量字符变量用来存放字符,且只能存放一字符变量用来存放字符,且只能存放一个字符个字符定义方法定义方法–char c1char c1,,c2c2;;–unsigned char c3unsigned char c3,,c4c4;; 字符变量的赋值字符变量的赋值–c1=‘a’c1=‘a’c1=‘a’c1=‘a’;;;;潭迷溯羽孤艳春斥址微涂傲姥敢商抉忻纯采挺白柒柔囱优贪铭耘腑蛋撩逢c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202434例例6 向字符变量赋以整数。
向字符变量赋以整数p27 #include
从ASCII代码表中可以看到从ASCII代码表中可以看到从ASCII代码表中可以看到从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCI每一个小写字母比它相应的大写字母的ASCI每一个小写字母比它相应的大写字母的ASCI每一个小写字母比它相应的大写字母的ASCII码大32C语言允许字符数据与整数直接进I码大32C语言允许字符数据与整数直接进I码大32C语言允许字符数据与整数直接进I码大32C语言允许字符数据与整数直接进行算术运算行算术运算行算术运算行算术运算 运行结果:运行结果:AA BB 裁淆泉谣鞠淖刨凿巢鸟仰陨亡斌掺茫早特周冀沏径了湖仓咎盖朝亮光昌姿c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024362.4.3 2.4.3 字符型数据:字符变量字符型数据:字符变量字符型数据:字符变量字符型数据:字符变量字符变量和整型数据可以相互赋值字符变量和整型数据可以相互赋值; ;字符数据可以以字符形式输出字符数据可以以字符形式输出, ,也可以以也可以以整型数据输出整型数据输出; ;字符数据可以参与任何整型数据的运算。
字符数据可以参与任何整型数据的运算肘苦芒虐冤僳马锯制核拼粮苑甲侩裴呀笔器毫荔处侠鸟亚娟于惕寒畏铁檄c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024382.5 2.5 变量声明及初始化变量声明及初始化变量声明及初始化变量声明及初始化使用变量的基本原则使用变量的基本原则–变量必须先定义,后使用变量必须先定义,后使用–所有变量必须在第一条可执行语句前定义所有变量必须在第一条可执行语句前定义 声明的顺序无关紧要声明的顺序无关紧要声明的顺序无关紧要声明的顺序无关紧要 一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量一条声明语句可声明若干个同类型的变量 声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机声明变量,是初始化变量的最好时机–不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数不被初始化的变量,其值为危险的随机数charchar esc = 'a'; esc = 'a';intint i = 1; i = 1;intint sum = 0; sum = 0;floatfloat eps = 1.0e-5; eps = 1.0e-5;拍奸充群迄骨属痘炊漏摔塔辛借窄宋惩赛祟煽冀锻矫豪也霄壶拔炭宙狂绞c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202439const const 类型修饰符类型修饰符类型修饰符类型修饰符p24-25p24-25constconst类型修饰符必须放在它所修饰的类类型修饰符必须放在它所修饰的类型名之前型名之前用用constconst修饰的标识符为常量,编译程序修饰的标识符为常量,编译程序将其存放在将其存放在只读只读存储区,因此在定义时存储区,因此在定义时赋初值赋初值–const float pi=3.14159265const float pi=3.14159265;;与宏常量相比的好处:与宏常量相比的好处:有数据类型,能调试有数据类型,能调试毗席削担钓贬疵伦趟忘黎卸腔飞叮伤待碾琶橱焕牲脾属瞬母胳屉氛葡外耀c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202440constconst常量常量常量常量用用const修饰定义的变量为常量修饰定义的变量为常量–const float pi = 3.1425926; 常量只能在定义时赋值,然后常量只能在定义时赋值,然后不能不能再改再改变其值变其值 常数、常数、 const常量常量、、宏常量和枚举常量,宏常量和枚举常量,都可以用来表示一个永远不会改变的数都可以用来表示一个永远不会改变的数–不建议直接使用前者,而用后三者代替不建议直接使用前者,而用后三者代替不建议直接使用前者,而用后三者代替不建议直接使用前者,而用后三者代替头氰骚攻谆闽纠喝受嗡娘耙讳昭昂为亲涸衅察斧翻尽卿兵奇镭削弗瞒典便c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202441使用变量要注意使用变量要注意使用变量要注意使用变量要注意不要对变量所占的内存空间字节数想当然不要对变量所占的内存空间字节数想当然–用用用用sizeofsizeof获得变量或者数据类型的长度获得变量或者数据类型的长度获得变量或者数据类型的长度获得变量或者数据类型的长度–现场演示程序在现场演示程序在现场演示程序在现场演示程序在Turbo C2.0Turbo C2.0Turbo C2.0Turbo C2.0和和和和Visual CVisual CVisual CVisual C下的运下的运下的运下的运行结果行结果行结果行结果注意!注意!注意!注意!#include
型叛悟伏拜徊汁帝罢毒唬庄液边哗善灶韩瑶几浦霓赃廖松冲惮摹心尚蜒索棒c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024442.6 2.6 常用运算符和表达式常用运算符和表达式常用运算符和表达式常用运算符和表达式 C的运算符有以下几类:C的运算符有以下几类: (1)(1)(1)(1)算术运算符算术运算符算术运算符算术运算符 ((((+ - * / %+ - * / %+ - * / %+ - * / %)))) (2)(2)(2)(2)关系运算符关系运算符关系运算符关系运算符 (><==>=<(><==>=<(><==>=<(><==>=<=!=)=!=)=!=)=!=) (3)(3)(3)(3)逻辑运算符逻辑运算符逻辑运算符逻辑运算符 (!&&(!&&(!&&(!&&||||||||)))) (4)(4)(4)(4)位运算符位运算符位运算符位运算符 ((((<< >> ~ |∧<< >> ~ |∧<< >> ~ |∧<< >> ~ |∧&)&)&)&) (5)(5)(5)(5)赋值运算符赋值运算符赋值运算符赋值运算符 (=及其扩展赋值(=及其扩展赋值(=及其扩展赋值(=及其扩展赋值运算符)运算符)运算符)运算符) (6)(6)(6)(6)条件运算符条件运算符条件运算符条件运算符 (?:)(?:)(?:)(?:) (7)(7)(7)(7)逗号运算符逗号运算符逗号运算符逗号运算符 ( ( ( (,),),),) (8)(8)指针运算符指针运算符指针运算符指针运算符 ((((* *和&)和&)和&)和&) (9)(9)求字节数运算符求字节数运算符求字节数运算符求字节数运算符 (sizeof)(sizeof)(sizeof)(sizeof) (10)(10)强制类型转换运算符强制类型转换运算符强制类型转换运算符强制类型转换运算符 (11)(11)分量运算符分量运算符分量运算符分量运算符 (12)(12)下标运算符下标运算符下标运算符下标运算符 (13)(13)其他其他其他其他 (如函数调用运算符(如函数调用运算符(如函数调用运算符(如函数调用运算符())())())())划尧希乎武目钩颜竹磅宏脊妓眷昆淤嗓炕揉搔露倦梦凳驶彭袁刃掩塘仕勉c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024452.6 2.6 常用运算符和表达式常用运算符和表达式常用运算符和表达式常用运算符和表达式运算符的性质分类运算符的性质分类按照运算所需要的对象(操作数)的个数按照运算所需要的对象(操作数)的个数进行分类进行分类–单目运算符(一元运算符)单目运算符(一元运算符)–双目运算符(二元运算符)双目运算符(二元运算符)–三目运算符(三元运算符)三目运算符(三元运算符)表达式:操作符、常量、变量的任意组合表达式:操作符、常量、变量的任意组合仰顺兄占跟沥酪晤减诞魔搜吏痢旨竣芜肿嚣嫂礁躯酥辰阳遍祭风副削殆鉴c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024462.6.1 2.6.1 运算符的优先级和结合性运算符的优先级和结合性运算符的优先级和结合性运算符的优先级和结合性C语言规定了运算符的优先级和结合性C语言规定了运算符的优先级和结合性–在表达式求值时,先按运算符的优先级别高在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。
低次序执行,例如先乘除后加减 C规定了各种运算符的结合方向C规定了各种运算符的结合方向( (结合性结合性) ) –算术运算符的结合方向为算术运算符的结合方向为算术运算符的结合方向为算术运算符的结合方向为““““自左至右自左至右自左至右自左至右””””,即,即,即,即先左后右先左后右先左后右先左后右 魄绘票甭害泄缅佯檄定痕糖么聚朵制者篮宦瓦亦母砒晃进谍戏戍腆郝星吩c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024472.6.2 2.6.2 算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式(1)(1)基本的算术运算符基本的算术运算符: :• •++ 加法运算符,或正值运算符加法运算符,或正值运算符加法运算符,或正值运算符加法运算符,或正值运算符•如如如如: : : :3+5、3+5、3+5、3+5、1 1 1 1+3+3+3+3• •-- 减法运算符,或负值运算符减法运算符,或负值运算符减法运算符,或负值运算符减法运算符,或负值运算符•如如如如: : : :5-2、5-2、5-2、5-2、4 4 4 4-3-3-3-3• •* * 乘法运算符。
如乘法运算符如乘法运算符如乘法运算符如: : : :3333* * * *5555称届皆剖肯棺刺釉阵悍屈舍咨魄衬沂铭董峭峨踞腔蔼懈奏六蝶肢无序庄舰c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024482.6.2 2.6.2 算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式(1)(1)基本的算术运算符基本的算术运算符: :• •// (除法运算符如(除法运算符如(除法运算符如(除法运算符如: : : :5/3)5/3)5/3)5/3)•两整数相除,其值为整数两整数相除,其值为整数两整数相除,其值为整数两整数相除,其值为整数•除数和被除数有一个为负值时,结果向零取整除数和被除数有一个为负值时,结果向零取整除数和被除数有一个为负值时,结果向零取整除数和被除数有一个为负值时,结果向零取整•除数和被除数中有一个为实数时,结果为除数和被除数中有一个为实数时,结果为除数和被除数中有一个为实数时,结果为除数和被除数中有一个为实数时,结果为doubledoubledoubledouble型型型型• •%% (模运算符,或称求余运算符,%(模运算符,或称求余运算符,%(模运算符,或称求余运算符,%(模运算符,或称求余运算符,%两侧均应为整两侧均应为整两侧均应为整两侧均应为整型数据型数据型数据型数据,如,如,如,如: : : :7%4的值为3)7%4的值为3)7%4的值为3)7%4的值为3)•结果符号由被除数结果符号由被除数结果符号由被除数结果符号由被除数()()()()决定决定决定决定•7%7%7%7%((((-4-4-4-4)、()、()、()、(-7-7-7-7))))% % % %((((-4-4-4-4)、()、()、()、(-7-7-7-7))))%4%4%4%4申嘲肩炙涛阴苛术煽滥睁家驻均始谐街啥稗崭锡皋厂腿昨罐吸叉轮饭俊仙c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202449例例10 10 模运算符模运算符#include "stdio.h"#include "stdio.h"void main()void main(){ {int a,b,c;int a,b,c;a=7%(-4);a=7%(-4);b=(-7)%(-4);b=(-7)%(-4);c=(-7)%4;c=(-7)%4;printf("a=%d,b=%d,c=%d",a,b,c); printf("a=%d,b=%d,c=%d",a,b,c); } } 运行结果:运行结果: 蔬祈躺育堪塞宿流鉴昼舶撩悯问箩诣冯灼啮陶备贺精鳖倒账菠拘覆柬仕拟c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024502.6.2 2.6.2 算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式算术运算符和算术表达式算术表达式算术表达式–用算术运算符和括号将运算对象(常量、用算术运算符和括号将运算对象(常量、变量、函数等)连接起来的式子称为算术变量、函数等)连接起来的式子称为算术表达式。
表达式–符合符合C C语言的语法规则语言的语法规则如:如:3.14*r*r3.14*r*r火熙盛狼钙天玉芭淫即颓摊牢房酋幼妥谎蒋东矣罐贾让幅皱到蒸第帽楔锌c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202451算术运算符算术运算符算术运算符算术运算符常用的标准数学函数函数名函数名功功 能能函数名函数名功功 能能sqrt(x)计计算算x x的平方根,的平方根,x x应应大大于等于于等于0 0 exp(x)计计算算e ex x的的值值fabs(x)计计算算x x的的绝对值绝对值pow(x,y)计计算算x xy y的的值值log(x)计计算算lnxlnx的的值值sin(x)计计算算sinxsinx的的值值,,x x为为弧度弧度值值log10(x)计计算算lgxlgx的的值值cos(x)计计算算cosxcosx的的值值,,x x为为弧度弧度值值 常见错误:常见错误:常见错误:常见错误:P32-33P32-33漠步莆便喜酱乏佯绎缔债潦汕挎漱魂条当木秀怨助宙栓宪积寨磕疼十唇彪c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024522.6.3 2.6.3 关系运算符关系运算符关系运算符关系运算符>,,>=,,<,,<=,,==,,!=–大于,大于等于,小于,小于等于,等于,大于,大于等于,小于,小于等于,等于,大于,大于等于,小于,小于等于,等于,大于,大于等于,小于,小于等于,等于,不等于不等于不等于不等于又没者秸鄙吾肺悯探芝司阎溺卖赊荣拱才骨东绘中棱范佃领烬匙枉伪匪阅c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024532.6.3 2.6.3 关系表达式关系表达式关系表达式关系表达式关系表达式通常用于表达一个判断条件关系表达式通常用于表达一个判断条件是真或是假是真或是假–0 0 0 0,表示假,即该关系不成立,表示假,即该关系不成立,表示假,即该关系不成立,表示假,即该关系不成立–非非非非0 0 0 0,表示真,即该关系成立,表示真,即该关系成立,表示真,即该关系成立,表示真,即该关系成立–绝大多数编译器,关系运算得到的非绝大多数编译器,关系运算得到的非绝大多数编译器,关系运算得到的非绝大多数编译器,关系运算得到的非0 0 0 0结果结果结果结果为为为为1 1 1 1–eg: P33 numeg: P33 numeg: P33 numeg: P33 num不是偶数条件成立不是偶数条件成立不是偶数条件成立不是偶数条件成立 “num % 2!=0” “num % 2!=0” “num % 2!=0” “num % 2!=0” 与与与与“num % 2”“num % 2”“num % 2”“num % 2”等价。
等价询拢廓示叼晰究俄品昔胳焊参世升责兄烁汞肖船氏府钙嘻躯耍叮哟著量拾c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024542.6.32.6.3关系表达式关系表达式关系表达式关系表达式关系运算符优先级低于算术运算符关系运算符优先级低于算术运算符 > >、、< <、、<=<=、、>=>= == ==、、!=!= 计算关系表达式的值(计算关系表达式的值(0 0、、1 1)) 判断关系表达式的真假值(判断关系表达式的真假值(0 0、非、非0 0)) 数学表达式的不同数学表达式的不同–连写:连写:连写:连写:a>b>ca>b>ca>b>ca>b>c–0<=a<=90<=a<=90<=a<=90<=a<=9 0<=a && a<=9 语法没问题,但是语法没问题,但是语法没问题,但是语法没问题,但是会出错增店树迫厘为佃傍汗青葵峨垒饯阁请孪凭吧惋勘披害迎发什威消卫尽朴赣c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024552.6.4 2.6.4 逻辑运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算也被称为布尔(逻辑运算也被称为布尔(BooleanBoolean)运算)运算&&–与运算与运算–( a > b && b > c);;a a大于大于b b,并且,并且b b大于大于c c ||||–或运算或运算或运算或运算–( a > b || b > c)( a > b || b > c);;;; a a a a大于大于大于大于b b b b,或者,或者,或者,或者b b b b大于大于大于大于c c c c ! !–求反求反求反求反–( !a )( !a );如果;如果;如果;如果a a a a是是是是0 0 0 0,结果非,结果非,结果非,结果非0 0 0 0;如果;如果;如果;如果a a a a是非是非是非是非0 0 0 0,结果是,结果是,结果是,结果是0 0 0 0–并不改变并不改变并不改变并不改变a a a a的值的值的值的值谍赊枫灶溺怀啦怕蔚巡钙菜腾培叉厚筑押蓝胀仇塔套胖孝孤摔藉粘兆陡伍c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202456实例实例实例实例chch是英文大写字母是英文大写字母 (ch >= 'A') && (ch <= 'Z') 判断某一年判断某一年yearyear是否是闰年的条件是满足下列是否是闰年的条件是满足下列两个条件之一:两个条件之一:–能被能被能被能被4 4 4 4整除,但不能被整除,但不能被整除,但不能被整除,但不能被100100100100整除;整除;整除;整除;–能被能被能被能被400400400400整除;整除;整除;整除; ((year % 4 == 0) && (year % 100 != 0)) || ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)(year % 400 == 0)蒙股竟沼好陈苔同颤谣悯而湿降幻拣出暮将赣层尘拯膀令牟夸鹤航喂藻辊c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024572.6.5 2.6.5 赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符赋值运算符“=”“=”用法:变量名用法:变量名= =表达式表达式作用:将表达式的值赋给变量作用:将表达式的值赋给变量–a=5a=5a=5a=5;;;;–a=a+5a=a+5a=a+5a=a+5;;;;–a=ba=ba=ba=b;;;;–b=ab=ab=ab=a;;;;–与数学中的等式不同!与数学中的等式不同!与数学中的等式不同!与数学中的等式不同!卜喉仆嘻卫蛛旭邹惩咸椰履慎挨钧攘鲁恒坛键苍沥屯锨姬妒针兵熙盾洛褥c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024582.6.7 2.6.7 类型转换类型转换类型转换类型转换在进行赋值操作时,会发生类型转换在进行赋值操作时,会发生类型转换将取值范围将取值范围小小的类型的类型转为转为取值范围取值范围大大的的类型是类型是安全安全的的反之是不安全的反之是不安全的疼节呛遵鹅谰松砂蒂袒喜类犊侦编木折浆栋啸彻划夸箍湖灭熬耙皋凉疾椅c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202459赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换1.1.实型数据赋给整型变量,舍弃小数部分实型数据赋给整型变量,舍弃小数部分2.2.整型数据赋给实型数据时,数值不变,但是整型数据赋给实型数据时,数值不变,但是以指数形式存储内存中以指数形式存储内存中–int aint aint aint a;;;;–float bfloat bfloat bfloat b;;;;–a=5.34;a=5.34;a=5.34;a=5.34;–b=15;b=15;b=15;b=15;–printf(“%d%f\n”,a,b);printf(“%d%f\n”,a,b);printf(“%d%f\n”,a,b);printf(“%d%f\n”,a,b);哗晶逞褒线敢庸凰驰牛愤价褥韵陶汪快壹桨圭孜擦赐甥峻垛绅慧乡录妊憾c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202460赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换3.char3.char、、intint、、longlong等类型转换等类型转换3.1 “3.1 “短短””数据赋给数据赋给““长长””变量变量–char c;int ichar c;int ichar c;int ichar c;int i;;;;–c=43c=43c=43c=43;;;;i=c;i=c;i=c;i=c;–printf(“%d\n”,i);printf(“%d\n”,i);printf(“%d\n”,i);printf(“%d\n”,i);湛旦俐带侩边鳃漠幅靛浚乖亩馁贴堤侯狸接泼臃拣宪憋咕催坑仰藏潜眯杆c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202461赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换赋值结果与类型转换3.char3.char、、intint、、longlong等类型转换等类型转换3.2 “3.2 “长长””数据赋给数据赋给““短短””变量变量–将低字节位原封不动的存入变量(可能出将低字节位原封不动的存入变量(可能出将低字节位原封不动的存入变量(可能出将低字节位原封不动的存入变量(可能出现差错)现差错)现差错)现差错)–short int ishort int i;;–long L=6324232L;long L=6324232L;–i=L;i=L;–printf(“%d\n”,i);printf(“%d\n”,i);勺篱佩宪胯询唐悟高酒形充滋嚏帜优榜傅垢幌奈痕题粪唁钻殿砂冕夕哎刷c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024620 00 0 0000 0000 0000 0101 1010 0000 0000 1010 0000 0000 0000 0000 0000 1010 00001 10 0 0000 0000 0000 0000 0000 1010 0000 L=6324232LL=6324232L i= -32760i= -32760邮雕芬生矿永柑凹互苑喀撼袱陀露锰细凸评戮玻粮战郑市吸凳阮幅砂汐冒c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024632.6.5 2.6.5 赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符赋值运算符“=”“=”赋值结果与类型转换赋值结果与类型转换复合赋值运算符复合赋值运算符–变量名变量名变量名变量名 二元运算符二元运算符二元运算符二元运算符= = = =表达式表达式表达式表达式–二元运算符:二元运算符:二元运算符:二元运算符:+ + + +、、、、- - - -、、、、* * * *、、、、/ / / /、、、、% % % % << << << <<、、、、>>>>>>>>、、、、& & & &、、、、^ ^ ^ ^、、、、| | | |–+=+=、、-=-=、、*=*=、、/=/=、、%=%=廊批惕旺瀑睹取瑚斥寅滦铰肾糙私柠藕倚巍荐雾酪汗覆隋唱挂条巢巾双汗c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024642.6.5 2.6.5 赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式复合赋值运算符复合赋值运算符–变量名变量名 二元运算符二元运算符= =表达式表达式–+=+=、、-=-=、、*=*=、、/=/=、、%=%=–a+=3a+=3a=a+3a=a+3–a*=b+4a*=b+4a=a*(b+4)a=a*(b+4)炒辛佃锭葵忿踌趁腆整盖挞弃雷讼皋女力榴摈脾毯渐屑贷愁芳编渺喜街旷c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024652.6.5 2.6.5 赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符与赋值表达式赋值表达式:将一个变量和一个表达式赋值表达式:将一个变量和一个表达式连接起来连接起来–变量变量= =表达式表达式–a=5a=5;;a=3*b;a=b=5a=3*b;a=b=5a=(b=5);a=(b=5);–右结合!右结合!–a=5+(c=6)a=5+(c=6)–a=(b=4)+(c+6)a=(b=4)+(c+6) a=(b=4)+(c=6) a=(b=10)/(c=2) a+=a-=a*a我贷劲择癣砍淌恃东娩颗酶宠戚绸恰褥念逐炸狈庄责芝倒倍赤妹瘪屹粱宵c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024662.6.62.6.6增增增增1 1和减和减和减和减1 1运算符运算符运算符运算符 p38 p38n++,,n--,,++n,,--n–++让参与运算的变量加让参与运算的变量加1 1,,--让参与运算的变量让参与运算的变量减减1 1–作为后缀运算符时,先取作为后缀运算符时,先取n的值,然后加的值,然后加/ /减减1 1–作为前缀运算符时,先加作为前缀运算符时,先加/ /减减1 1,然后取,然后取n的值的值 m = n++; 等价于等价于m=n;m=n;n++ (n=n+1);n++ (n=n+1); m = ++n; 等价于等价于n++; n++; m=n; m=n;僚泅诊凭菲税烤椒弦妙辛赠集溪至社垄脱害唇虽测卓宙能绪消胆幂情餐斤c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024672.6.62.6.6增增增增1 1和减和减和减和减1 1运算符运算符运算符运算符 p38 p38单目运算符的右结合性问题单目运算符的右结合性问题m=-n++;m=-n++;m=-(n++);m=-(n++); m=-n;m=-n;m=-n;m=-n;n=n+1;n=n+1;n=n+1;n=n+1; 增增1 1减减1 1的对象只能是变量,不能是表达式的对象只能是变量,不能是表达式硒棠骑皱莱但坏拯伐橇佩窒肄臂铝沟康乍韶哆失呢绚瞎誊恰摇唬执镊辛害c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024682.6.62.6.6增增增增1 1和减和减和减和减1 1运算符运算符运算符运算符 p38 p38良好的程序设计风格提倡:在一行语句中,一个变良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加量只能出现一次加1 1或者减或者减1 1运算运算–过多的加过多的加1 1和减和减1 1运算混合,不仅可读性差,而且因为编运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行译器实现的方法不同,导致不同编译器产生不同的运行结果结果 C C C C语言有的运算符为一个字符,有的运算符由两个字语言有的运算符为一个字符,有的运算符由两个字语言有的运算符为一个字符,有的运算符由两个字语言有的运算符为一个字符,有的运算符由两个字符构成,为避免误解,最好采用大家都能理解的写符构成,为避免误解,最好采用大家都能理解的写符构成,为避免误解,最好采用大家都能理解的写符构成,为避免误解,最好采用大家都能理解的写法。
法–i+++j;i+++j;i+++j;i+++j;–(i++)+j;(i++)+j;(i++)+j;(i++)+j;或者或者或者或者i+(++j);i+(++j);i+(++j);i+(++j);睁通或劫峪送改曙议燥畏侥增慈掣揖惺慎笺纂积爹碱凶培堡辽汇坡睹西能c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024692.6.7 2.6.7 强制类型转换强制类型转换强制类型转换强制类型转换将一个表达式强制转化为需要的类型将一个表达式强制转化为需要的类型(类型关键字)(类型关键字) 表达式表达式–((((doubledoubledoubledouble)))) a a a a–((((intintintint)()()()(x+yx+yx+yx+y))))–((((floatfloatfloatfloat)()()()(5%35%35%35%3))))材赎玩陌烯烹雌勃骋仪割幽儿菌袍裁挛御钉鸯扼豪有前鸡悍鲍练眉呻恐劝c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202470例例 11强制类型转换。
强制类型转换 #include
再求解表达式2整个逗号表达式的值是表达式2的值整个逗号表达式的值是表达式2的值 逗号表达式 的值为14舌参闺妹盘井豪涅盅成却尸画页篱纽霹桨辈獭猫侍梧匝萝原椎笆苞俯栈珠c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024722.6.9 逗号运算符逗号运算符 p40例:例:逗号表达式逗号表达式a=3a=3*5*5,a,a* *44 分析分析分析分析: : : :赋值运算符的优先级别高于逗号运算符,赋值运算符的优先级别高于逗号运算符,赋值运算符的优先级别高于逗号运算符,赋值运算符的优先级别高于逗号运算符, 因因因因此应先求解a=3此应先求解a=3此应先求解a=3此应先求解a=3*5.*5.*5.*5.a的值为15,然后求解a*4,得60整个逗号表达式的值为60一个逗号表达式又可以与另一个表达式组成一一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式个新的逗号表达式 如如如如: : : :(a=3(a=3(a=3(a=3* * * *5,a5,a5,a5,a* * * *4)4)4)4),a+5,a+5,a+5,a+5 a+5先计算出a的值等于15,再进行aa+5先计算出a的值等于15,再进行aa+5先计算出a的值等于15,再进行aa+5先计算出a的值等于15,再进行a* * * *4的4的4的4的运算得运算得运算得运算得60606060(但a值未变,仍为(但a值未变,仍为(但a值未变,仍为(但a值未变,仍为15151515),再进行a),再进行a),再进行a),再进行a+5得20,即整个表达式的值为20。
+5得20,即整个表达式的值为20+5得20,即整个表达式的值为20+5得20,即整个表达式的值为20X=(a=3,6*a)X=(a=3,6*a)X=(a=3,6*a)X=(a=3,6*a)x和整个赋值表达式的值都为18跃抢卓躁楔昭懦举咐烷移晨怎旦鬃驳歹潘匙沫态锦恍语琴屹瞥匝购扩奉喜c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024732.6.9 2.6.9 逗号运算符逗号运算符逗号运算符逗号运算符 p40 p40表达式表达式1, 表达式表达式2, ….., 表达式表达式n多数情况下,并不使用整个逗号表达式的多数情况下,并不使用整个逗号表达式的值,值,更常见的情况是要分别得到各表达式更常见的情况是要分别得到各表达式的值的值主要用在循环语句中,同时对多个变量赋主要用在循环语句中,同时对多个变量赋初值等初值等 forfor (i = 0 , j = 0; i < j; i++, (i = 0 , j = 0; i < j; i++, j++)j++)颁垒树妮匈插巢比熬呐吞述祝疙渡挣江幼掣愤卜销挡隶哈臭计琳蚕受蹄屡c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/2024742.6.9 逗号运算符逗号运算符 p40注意注意:1.:1.逗号运算符的优先级是最低的。
逗号运算符的优先级是最低的 2. 2.并不是任何地方出现的逗号都是作为并不是任何地方出现的逗号都是作为逗号运算符例如函数参数也是用逗号来逗号运算符例如函数参数也是用逗号来间隔的a,b,ca,b,c”并不是一个逗并不是一个逗号表达式,它号表达式,它是是printf函数的函数的3个参数个参数printf(“%d,%d,%d”,(a,b,c),b,c)printf(“%d,%d,%d”,(a,b,c),b,c) “(a,b,c)(a,b,c)”是一个逗号表是一个逗号表达式,它的值达式,它的值等于c的值等于c的值 如如: : printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,a,b,c);石岿妓艰叼夹虽坞前票渐区丝内窃置闻箕闲完丝瓮躇永舔庇导臂铺裹浙纷c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202475表达式中的类型转换表达式中的类型转换表达式中的类型转换表达式中的类型转换 p41-42 p41-42同种数据类型的运算结果,还是该类型同种数据类型的运算结果,还是该类型不同种数据类型的运算结果,是两种类型不同种数据类型的运算结果,是两种类型中取值范围更大的那种中取值范围更大的那种–long double > double > float > long > int > short > char 把数据赋值给另外一种类型变量也会发生把数据赋值给另外一种类型变量也会发生自动类型转换自动类型转换–从小到大,顺利转换从小到大,顺利转换从小到大,顺利转换从小到大,顺利转换–从大到小,可能丢失信息(好的编译器会发出警告)从大到小,可能丢失信息(好的编译器会发出警告)从大到小,可能丢失信息(好的编译器会发出警告)从大到小,可能丢失信息(好的编译器会发出警告)愈突灵皑狸芒猾宴敛愉纳竿竭量洪饮当黔坟愈尹绰希妓认喷烟菜秃贞结休c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202476位操作运算符位操作运算符位操作运算符位操作运算符P38-40P38-40&–按位与运算按位与运算 |–按位或运算按位或运算按位或运算按位或运算 ^–按位异或运算按位异或运算按位异或运算按位异或运算<<–按位左移运算按位左移运算 >>–按位右移运算按位右移运算按位右移运算按位右移运算 ~–按位求反按位求反按位求反按位求反沼蝇你起圾矣简司烬髓躬掂串励尸缺堤拦洞睁蔗迈扔雕芹亮爪李砍澳架钒c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202477条件表达式条件表达式条件表达式条件表达式把把a和和b中的最大值放入中的最大值放入z中中–if (a > b) z = a;else z = b;–z = (a > b) ? a : b; 此种表达式切忌用得过于繁杂此种表达式切忌用得过于繁杂坚筐氯董搽姓煞仓霸饯撕法藏寅氛染眉趋导腊戮怀柜钒词捐话盲慕向频障c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202478优先级优先级优先级优先级( ) [ ] -> .! ~ ++ -- + - * & (类型类型) sizeof* / %+ -<< >>< <= > >=== !=&^|&&||? := += -= *= /= %= &= ^= |= <<= >>=,沸猜莎龄当敲坐汛棱焰凤翱姓里挠欠倦板项柠稗色乾惨仑买砍剂苗农拓纲c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202479优先级优先级优先级优先级能背下优先级表的人凤毛麟角能背下优先级表的人凤毛麟角用括号来控制运算顺序更直观、方便,用括号来控制运算顺序更直观、方便,并减少出错的概率并减少出错的概率抢妆知雷厄陀个歪悯诀冲野眠工簧谷粒欧大泼厄艘麻底榜丘辜酿妙私遗兼c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202480结合性结合性结合性结合性多数运算符为左结合多数运算符为左结合少数为右结合:少数为右结合:–一元运算符一元运算符–赋值运算符赋值运算符–条件运算符条件运算符山床鞠期健蔚崩虽胚比涯樊尼渭饭瞄弃颖墅感积牡偶挟谍纬倔怨贷梳突哩c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202481这一章我们学到了这一章我们学到了这一章我们学到了这一章我们学到了变量的命名规则变量的命名规则数据类型数据类型–char,,short,,int,,long,,float,,double,,long double–signed,,unsigned–enum常数、转义字符常数、转义字符 运算符运算符运算符运算符––算术运算符、关系运算符、逻辑运算符、增一算术运算符、关系运算符、逻辑运算符、增一算术运算符、关系运算符、逻辑运算符、增一算术运算符、关系运算符、逻辑运算符、增一/ / / /减一运算符、位运减一运算符、位运减一运算符、位运减一运算符、位运算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(算符、赋值运算符、类型强转运算符、逗号运算符、条件运算符(???? : : : :)、)、)、)、 sizeofsizeof 类型转换类型转换类型转换类型转换 优先级和结合性优先级和结合性优先级和结合性优先级和结合性凝扫烈敝乱雕尹榷亿洞媒棱曹层谎巍迫陶涉粟粘惋挺楷臼鞋吹谴弃鳖晾葫c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新8/31/202482ASCIIASCII字符表字符表字符表字符表1 1苇凰氦乾栽夯谱筑国抉溯永蜒邹腆顿侦弛矽铱意钢志数祝窍灼公果如斌坤c语言大学实用教程 第2章 数据类型运算符和表达式新c语言大学实用教程 第2章 数据类型运算符和表达式新。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





