C语言程序设计第三章数据类型运算符和表达式.ppt

上传人:sccc 文档编号:5288059 上传时间:2023-06-22 格式:PPT 页数:48 大小:255KB
返回 下载 相关 举报
C语言程序设计第三章数据类型运算符和表达式.ppt_第1页
第1页 / 共48页
C语言程序设计第三章数据类型运算符和表达式.ppt_第2页
第2页 / 共48页
C语言程序设计第三章数据类型运算符和表达式.ppt_第3页
第3页 / 共48页
C语言程序设计第三章数据类型运算符和表达式.ppt_第4页
第4页 / 共48页
C语言程序设计第三章数据类型运算符和表达式.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《C语言程序设计第三章数据类型运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第三章数据类型运算符和表达式.ppt(48页珍藏版)》请在三一办公上搜索。

1、C程序设计,主讲人:袁丽,燕大里仁基础教学部,汀嚣诺谷卿骋僚番阂拼架僧阴签唬份攻绝袜炒呈砒央獭始汪细猾巨草劝抵C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,第三章:数据类型 运算符和表达式,盘慌昂孔撩瘩充缉坟馈患隐喂譬仁趋键磕目啄辕燎瓷拜烬拢铜环羌社思筑C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,1、C语言的基本元素:,一、字符集,C语言中使用的基本符号有如下五种:,(1)大写字母:A Z,(2)小写字母:a z,(3)阿拉伯数字:0 9,(4)下划线:,(5)标点符号和运算符:,洗奴鉴邱洽钞宜铱

2、棍蛙滓侗睡洗烁藤匪慎遇记抠铃杯慨澜拈趴岸泵辣赌读C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,二、标识符,用来标记常量、变量、函数以及文件名字的字符序列。,标识符的构成规则:,以字母(大小写皆可)或下划线开头;随后可跟若干个(包括0个)字母、数字、下划线;标识符的长度各个系统不同,最好不要超过8个字符;,注意:区分大小写。sum,Sum是两个标识符。,系统保留字,枷掌喧晾攘古词嫡诬吓往豺燎右茂孩哩烙俘教冶洞弛醋格姥顷让哩智馋阉C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,三、关键字,也称“保留字”。

3、它是C语言中具有特定含义、专门用作语言特定成分的一类标识符。,ANSI推荐的C语言的关键字是32个(Turbo C另扩展了11个),如:main、int、char、float、define等。,注意:所有的关键字都有固定的意义,不能用作其他;所有的关键字都必须小写;如:else与ELSE代表不同含义:else是关键字,ELSE是用户定义 的标识符。,车芝摆块伎淖务项冀驾玩赁娄椽镑利戒瘩师瀑幂父海茸划磋浅搪暇汽暮闻C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,2、数据类型:,算法处理的对象是数据,而数据又以某种特定的形式存在。所谓数据的组织形式也就

4、是数据结构,C语言的数据结构是以数据类型形式出现。,所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式 不同的类型分配不同的长度和存储形式,栽攻网陡豌订挪渴卵恤休井拌沉觅炒禹姐显衙烛棒臂匈原宁买腔藩饼翌萎C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,C语言允许使用的数据类型:,数据类型的描述确定了数据在内存所占的空间大小,也确定了其表示范围,以及规定数据所能进行的操作。,鳃搞裔术适扎晌茨胀谅倡廷攻裴尿漠打花阔投纶迹周赦总蹦科残覆蚂尔快C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类

5、型、运算符和表达式,基本数据类型最主要的特点是,其值不可以再分解为其它类型。也就是说,基本数据类型是自我说明的。,构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一个基本数据类型或又是一个构造类型。,指针类型:指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。,蚤谚袱诸痛油箱糙里孙挟毋虚叶声残秆床萧名说刹呢滔打靠赫族爱丈舵逢C语言程序设计第三章 数据类型、运算符和表达式

6、C语言程序设计第三章 数据类型、运算符和表达式,空类型:在调用函数值时,通常应向调用者返回一个函数值。这个返回的函数值是具有一定的数据类型的,应在函数定义及函数说明中给以说明。例如在例题中给出的max函数定义中,函数头为:int max(int a,int b);其中“int”类型说明符即表示该函数的返回值为整型量。但是,也有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”。其类型说明符为void。,的夯润醒惧蒂恼范材搓沛惯趴遁榨销瘪箔缴腋濒衷滥核咒倦汕古蒂渭瘫平C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(1)常量:在

7、程序运行过程中,其值不能被改变的量整型常量:如1000,12345,0,-345,3、常量和变量:,数据有两种表现形式:常量和变量,它们可与数据类型结合起来分类。,整型常量就是整常数。在语言中,使用的整常数有八进制、十六进制和十进制三种。,1十进制整常数:十进制整常数没有前缀。其数码为09。以下各数是合法的十进制整常数:237、-568、65535、1627;以下各数不是合法的十进制整常数:023(不能有前导0)、23D(含有非十进制数码)。,詹戚磨攒鸟娃吾巩蹭硕恕架冗租俗篷竭榷熊挣墟婚首忍举过美渗银梆舶征C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表

8、达式,2八进制整常数:八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为07。八进制数通常是无符号数。以下各数是合法的八进制数:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535);以下各数不是合法的八进制数:256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号)。,3十六进制整常数:十六进制整常数的前缀为0X或0 x。其数码取值为09,AF或af。以下各数是合法的十六进制整常数:0X2A(十进制为42)、0XA0(十进制为160)、0XFFFF(十进制为65535);以下各数不是合法的十六进制整常数:5A(无前缀0X)、0X

9、3H(含有非十六进制数码)。,俭姜尝饺坞砾淘证币卡秸峻编倔泉演厦码貉坷喉糕葬缚铸幸向氰睦睬仕朽C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,实型常量:实型也称为浮点型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有两种形式:十进制小数形式,指数形式。1十进制数形式:由数码0 9和小数点组成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均为合法的实数。注意,必须有小数点。2指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:a E n(a为十进制

10、数,n为十进制整数)其值为 a*10n。如:2.1E5(等于2.1*105)3.7E-2(等于3.7*10-2),珠盗潮弦顶幸距陈沥攒唤银镶击聋隧坝彤朋闺富挎拨里轰众疟枯源婆域巢C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,字符常量:字符常量是用单引号括起来的一个字符。例如:a、b、=、+、?都是合法字符常量。在语言中,字符常量有以下特点:字符常量只能用单引号括起来,不能用双引号或其它括号。字符常量只能是单个字符,不能是字符串。字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如5和5 是不同的。5是字符常量,不能参与运算。

11、,峻捻争兄蝎立宅渝皇舒唉猴订估硷永覆睛咆跃云猩兔屉筋此咐肪锑署掏裹C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,转义字符:转义字符是一种特殊的字符常量。转义字符以反斜线开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。,釜墟晤封帕掩猴畴臼跋褪凋唉津咋壬讹篙讫毙汕择闹掺球潞络归助外每挝C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型

12、、运算符和表达式,字符串常量:,字符串常量是由一对双引号括起的字符序列。例如:CHINA,“C program”等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别:字符常量由单引号括起来,字符串常量由双引号括起来。字符常量只能是单个字符,字符串常量则可以含一个或多个字符。可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在语言中没有相应的字符串变量。但是可以用一个字符数组来存放一个字符串常量。字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0(ASCII码为0)。这是字符串结束的标志。,

13、推氯人古肯依藕旧兹户抢制仁速毫熬缮椽摧涵权尹吁光羌衰扁悠娄斜屋郸C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,例如:字符串“hello”在内存中所占的字节为:,h,e,l,l,0,o,字符常量a和字符串常量a虽然都只有一个字符,但在内存中的情况是不同的。a在内存中占一个字节,可表示为:,a,a在内存中占二个字节,可表示为:,a,0,迷拴陡悸矾卵曼你俘胞甥胡配师雪军枕寐腐帕卓殷鼓胀篇祖杀姥烘派枪农C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,符号常量:用一个标识符代表的一个常量,#define 标识符

14、 常量,符号常量在使用之前必须先定义,其一般形式为:其中#define也是一条预处理命令(预处理命令都以#开头),称为宏定义命令,其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。习惯上符号常量的标识符用大写字母.,宏定义命令(放程序头部),贤妻卯膜拎准撑瘫喜娩醋借奎程全弯嘘宠泻着腮禁藩荔蹦汕雾壮奠貉菠晾C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(2)变量:在程序运行期间,变量的值是可以改变的变量用标识符(变量名)表示,在内存中占一定的存储单元变量必须先定义,后使用定义变量时指定该变量的名字和

15、类型(类型符 标识符)变量名和变量值是两个不同的概念变量名实际上是以一个名字代表的一个存储地址从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据,分别定义了整型,字符型,单精度,双精度类型的变量,蘸木践狙珐窗古萍拼练吕铸象绳巴局摹摈泉譬艾膏填宙果逐瘸邑佳纳寄腻C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,在书写变量说明时,应注意以下几点:1.允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。2.最后一个变量名之后必须以“;”号结尾。3.变量说明必须放在变量使用

16、之前。一般放在函数体的开头部分。,m,100,变量名,变量值,存储单元,驮煞巨怂衫沽椿稽怎违男挚凳权黔宪任寨跺咀貉负忠盲乖牌忍苟强戴壁倚C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,整型变量:,1)整型数据在内存中的存放形式:,数值是以补码表示的:正数的补码和原码相同;负数的补码:将该数的绝对值的二进制形式按位取反再加1。,2)整型变量的分类基本型:类型说明符为int,在内存中占2个字节。短整量:类型说明符为short int或short。所占字节和取值范围均与基本型相同。长整型:类型说明符为long int或long,在内存中占4个字节。无符号

17、型:类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成:无符号基本型:类型说明符为unsigned int或unsigned。无符号短整型:类型说明符为unsigned short。无符号长整型:类型说明符为unsigned long。各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。,瀑蛙江斜挪晓会沮肿眩饶鞍恒起人胚赦搪橡霜土疑朔睁窒痔物颖侵寇弃屁C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,实型变量:,1)实型数据在内存中的存放形式:,实型数据按指数形式存储。实数3.14159在

18、内存中的存放形式如下:,2)实型变量的分类,小数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。,实型变量分为:单精度(float型)、双精度(double型)和长双精度(long double型)三类。,例如:float x,y;(x,y为单精度实型量)double a,b,c;(a,b,c为双精度实型量),色劫帧鞋渔还呢茫无蝇猫屿杏戏楼烹响现永整损牵栖数陈姻采侵赣仙棺曙C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,字符型变量:,字符变量用来存储字符常量,即单个字符。字符变量的类型说明符是c

19、har。字符变量类型定义的格式和书写规则都与整型变量相同。例如:char a,b;,1)字符型数据在内存中的存放形式:,每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。例如:x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予x和y值:a=x;b=y;,实际上是在a,b两个单元内存放120和121的二进制代码:,a:,b:,赶裸婿凳跳凛皿喊译但粉吐傅韭判瞳锋效尔繁溉翻佐擦卉粕劣勺为秘脐拥C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,所以可以看成是整

20、型量。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。,例:向字符变量赋以整数。main()char a,b;a=120;b=121;printf(%c,%cn,a,b);printf(%d,%dn,a,b);,本程序中定义a,b为字符型,但在赋值语句中赋以整型值。从结果看,a,b值的输出形式取决于printf函数格式串中的格式符,当格式符为c时,对应输出的变量值为字符,当格式符为d时,对应输出的变量值为整数。,房妈膊遵赛娱霖净丁馋占宿撤姬伦仁狞锗镁华赊刑审蛋偷猎烃乎伸薯峪沥C语言程序设计第三章 数据类型、运算符和表达

21、式C语言程序设计第三章 数据类型、运算符和表达式,4、变量赋初值:,在程序中常常需要对变量赋初值,以便使用变量。程序中可有多种方法为变量提供初值。这里介绍在作变量定义的同时给变量赋以初值的方法。这种方法称为初始化。在变量定义中赋初值的一般形式为:,类型说明符 变量1=值1,变量2=值2,;,例如:int a=3;int b,c=5;char ch1=K,ch2=P;应注意,在定义中不允许连续赋值,如a=b=c=5是不合法的,剿顾梳橡帖患枚暗抄几胆陀踏贬赏糕戈闯舍摩镭戌听燎仙替炔雍蹄污色犯C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,5.不同类型数

22、据间的混合运算:+、-、*、/运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为double型,然后进行运算(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型(3)字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算,例:给定一个大写字母,要求用小写字母输出。,解题思路:关键是找到大、小写字母间的内在联系同一个字母,用小写表示的字符的ASCII代码比用大写表示的字符的ASCII代码大32,妥翅搭乔晒言狐袖溶拥瓮常语瞒蒸澜孔

23、碍枣畸呀绰纠扮樱啊庚煤氓匣距面C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,有关ASCII码字符表,ASCII码即美国标准信息交换码(American Code for Information Interchange)计算机只能理解数字,因此一个ASCII码就是一个字符,如:a的数字表现形式,也可表示某种动作。,第0-32号以及第127号(共34个)是控制字符或通讯专用字符,如:控制字符:LF(换行)、CR(回车)、DEL(删除)等;通讯专用字符:SOH(文头)等。,第33-126号(共94个)是字符,其中第48-57号为0-9十个阿拉伯数字;6

24、5-90号为26个大写英文字母,97-122号为26个小写英文字母,其余一些为标点符号、运算符号等。,岩多轴序进舅炬酥袖宾胰橙虫蜀闸劝涯念妨洗府始趣早径萝芍仪伶嵌柄绽C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,#include int main()char c1,c2;c1=A;c2=c1+32;printf(%cn,c2);printf(”%dn”,c2);return 0;,将字符A的ASCII代码65放到c1中,将65+32的结果放到c2中,用字符形式输出,用十进制形式输出,即赛格刻疹隋戊啸氧娩琵墓墨渴握豆咐智砾叛选填迎受沼拉麓侠嗣陋蛮棠

25、C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,6、各类数值型数据之间的混合运算,变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。,自动转换遵循以下规则:若参与运算量的类型不同,则先转换成同一类型,然后进行运算。转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。char型和short型参与运算时,必须先转换成int型。在赋值运算中,赋值号两边

26、量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度大于左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。,墒娜哑婶军佑烩颗络牡顶息跑胎檬蝉豢肥确幸匝挝礁昌拽摄料纲上映素厉C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,强制类型转换强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型例如:(float)a 把a转换为实型(int)(x+y)把x+y的结果转换为整型在使用强制转换时应注意以下问题:类型说明符和表达

27、式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。,正国涅蔚政驾航思擎踩侠码醋犀沮呀答屏蔼楼忌紊纷嚼凶腮琵地乃样递依C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,main()float f=5.75;printf(int)f=%d,f=%fn,(int)f,f);,本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变

28、。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。,怠派屠煌骸疵皮纫固缄遵维厅言阂赞剖槐宾峭划擞诣巴芽肃涧椒骨剃溺告C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,7、运算符与表达式,语言的运算符可分为以下几类:算术运算符:用于各类数值运算包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共七种。关系运算符:用于比较运算包括大于()、小于(=)、小于等于()六种。,程檄褪美绎民狗国置跳讯夹触哲讽钟赠燎煮推崖行仆啊剁旬被择导扁鸟郸C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章

29、 数据类型、运算符和表达式,赋值运算符:用于赋值运算分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)复合位运算赋值(&=,|=,=,=,=)三类共十一种。条件运算符:这是一个三目运算符用于条件求值(?:)。逗号运算符:用于把若干表达式组合成一个表达式(,)指针运算符:用于取内容(*)和取地址(&)二种运算求字节数运算符:用于计算数据类型所占的字节数(sizeof)特殊运算符:有括号(),下标,成员(,.)等几种。,饮栈巷拽山惩漓哲摈率纂幂弊横眩育哥寿佩咐午逆飞亮酒守库常眉沟萍纲C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,算术运算

30、符和算术表达式,(1)基本的算术运算符:+:正号运算符(单目运算符)-:负号运算符(单目运算符)*:乘法运算符/:除法运算符%:求余运算符+:加法运算符-:减法运算符,阔亨悼辰态识芥纶调妓窘茄受锤摸挝捧建惰筏悸雍别随衍侈珠公逆把佛袖C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(2)算术表达式和运算符的优先级和结合性 表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的特例。算术表达式:用算术运

31、算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。,以下是算术表达式的例子:a+b(a*2)c(x+r)*8-(a+b)7sin(x)+sin(y)(+i)-(j+)+(k-),静淌烂聊袒盯揽妙漳礼袁蔫实剖梧阉暖燥蹈酵封蔗榷瞬共琼龙蟹所喜小嗓C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,运算符的优先级:语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。,运算符的结合性:语言中各运算符的结合

32、性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。,菱潞擂殊兵实奉瞪拍氛矗柏洁洞庐什掺瑚稳呜捏窝回瘪辛嗜效涨梭真锰个C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(3)自增、自减运算符 自增,自减运算符:自增1运算符记为“+

33、”,其功能是使变量的值自增1。自减1运算符记为“-”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:+i i自增1后再参与其它运算。-i i自减1后再参与其它运算。i+i参与运算后,i的值再自增1。i-i参与运算后,i的值再自减1。,何到频双融钡合肩冉垃酶俊诊刽茫偿蜀弘羚蛔试谐颁挡票闯博愧串惧诅茸C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,例题:main()int i=8;printf(%dn,+i);printf(%dn,-i);printf(%dn,i+);printf(%dn,i-);prin

34、tf(%dn,-i+);printf(%dn,-i-);,i的初值为8,第2行i加1后输出故为9;第3行减1后输出故为8;第4行输出i为8之后再加1(为9);第5行输出i为9之后再减1(为8);第6行输出-8之后再加1(为9),第7行输出-9之后再减1(为8)。,宁破寡俭邦蛮帘椎衰季怎子练思空求远耍剁榨曳贩晌气冬冰陆僳剥症选盟C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,2.关系运算符和关系表达式,(1)比较两个量的运算符称为关系运算符。在语言中有以下关系运算符:大于=大于或等于=等于!=不等于 关系运算符都是双目运算符,其结合性均为左结合。关系

35、运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。,缸暗您躇椿逻替怔疏岛霓磊纽鞍哮格五哎侣恋豹殉尧院并建拥罩菲适征侗C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(2)关系表达式 关 系表达式的一般形式为:表达式 关系运算符 表达式 例如:a+bc-d,x3/2,a+1(bc),a!=(c=d)等。关系表达式的值是“真”和“假”,用“1”和“0”表示。如:50的值为“真”,即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。,操渣腆媒谨谷械斡电磋黔仔纤咬她滑者倒躇疟

36、钮嘻孜嘻森疾衅区饶饭扒攘C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(1)逻辑运算:用来判断一件事情是“对”还是“错”,或者说是“成立”还是“不成立”,判断的结果有两种,称为“逻辑值”,用数的符号表示就是“1”或“0”.(2)C语言提供三种逻辑运算符:&逻辑与(相当于“同时”)|逻辑或(相当于“或者”)!逻辑非(相当于“否定”)逻辑运算符把各个运算的变量(或常量)连接起来组成一个逻辑表达式。(3)运算规则:&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”|:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”

37、!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。,3.逻辑运算符和逻辑表达式,瑟茂承脸各赣竣苹迢林拴加膊慑位冬疗俭辟蝇霜尊乏瀑絮篇驻试销初毅流C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(4)逻辑运算符的运算优先级1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)&(与)|(或)2)与其它种类运算符的优先关系!算术运算 关系运算&|赋值运算(5)逻辑表达式:用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。在逻辑表达式里有参加逻辑运算的逻辑量

38、及逻辑运算最后的结果(逻辑值)。逻辑量凡是参加逻辑运算的变量、常量都是逻辑量。逻辑值逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值。,酮滁肃邯苯抑慈劲桑则台灯烷敞劈糊师胆种辕商侧丢聊铅吼兄高帚锅前痞C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,说明:(1)逻辑运算符两侧的操作数,除可以是和非的整数外,也可以是其它任何类型的数据,如实型、字符型等。(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说:1)对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数

39、。2)对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。,掺豫夯钵寸父疤篙笺猛糖订盐锤烬仆印燃菲淳撞苔禁上觅闰霜捷填戈俄铜C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,4.赋值运算符和赋值表达式,(1)赋值运算符 简单赋值运算符和表达式:简单赋值运算符记为“=”。由“=”连接的式子称为赋值表达式。其一般形式为:变量=表达式例如:x=a+b w=sin(a)+sin(b)y=i+-j赋值表达式的功能是计算表达式的值再赋予左边的变量。赋值运算符具有右结合性。因此 a=b=c=5可理解为 a=(b=(c=5),风劲养馒缺靡双

40、汪眼五库想数敲房当仑淤溶烧多合褥仲尘钟雹挝终津京突C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,(2)复合的赋值运算符在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,=,%=,=,&=,=,|=。构成复合赋值表达式的一般形式为:变量 双目运算符=表达式它等效于变量=变量 运算符 表达式例如:a+=5 等价于a=a+5 x*=y+7 等价于x=x*(y+7)r%=p 等价于r=r%p,苯唱府怀执沏良恶秉惑沮凳哑嗓魂抚正驴婉盔拌骑隶策课涯像匀盾侯母圆C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型

41、、运算符和表达式,5.逗号运算符和逗号表达式,(1)在语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。,例:main()int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf(y=%d,x=%d,y,x);,本例中,y等于整个逗号表达式的值,也就是表达式2的值,x是第一个表达式的值。,靶问佯当锹亿苯诅君熟猪憨播订钦陵夷轩悔言具鲜准框赏乱仟钩灌娟耍牵C语言程序设计第三章 数据类型、运算符和表达式C语言程

42、序设计第三章 数据类型、运算符和表达式,(2)说明:逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如:表达式1,(表达式2,表达式3)形成了嵌套情形。因此可以把逗号表达式扩展为以下形式:表达式1,表达式2,表达式n整个逗号表达式的值等于表达式n的值。程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。,炸梧忙逆但粱憋宠始芦初风弟藤功铱宠镊沏孔皱课竖镀琴磁峭眨印硼决茅C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章

43、 数据类型、运算符和表达式,例:逗号表达式 a=3*5,a*4对此表达式的求解,赋值运算符的优先级别高于逗号运算符,因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为 60。,例:比较下面两个表达式的作用的不同:x=(a=3,6*3)x=a=3,6*a,第个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。,韩腹奖耕则堵拟巢戮败痔乌型霸对攻辜乖亡睬凯勉甲某粤郡则惦举榴哆下C语言程序设计第三章 数据类型、运算符和表达式C语言程序

44、设计第三章 数据类型、运算符和表达式,例:函数参数也是用逗号来间隔的。如printf(%d,%d,%d,a,b,c);上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。如果改写为printf(%d,%d,%d,(a,b,c),b,c);则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。,色刀掠琳官鬼芝环诸阮冻得妒樊麓哄江渤粱团燥霞煽芯汲涌秉肥珠尝浇长C语言程序设计第三章 数据类型、运算符和表达式C语言程序设计第三章 数据类型、运算符和表达式,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号