欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C课件第2章基本数据类型与表达式.ppt

    • 资源ID:70102979       资源大小:253.99KB        全文页数:46页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C课件第2章基本数据类型与表达式.ppt

    第第2 2章章 基本数据类型与表达式基本数据类型与表达式第第2 2章章 基本数据类型与表达式基本数据类型与表达式2.1 C+2.1 C+数据类型概述数据类型概述2.2 C+2.2 C+的基本数据类型的基本数据类型2.3 2.3 常量与变量常量与变量2.4 2.4 运算符与表达式运算符与表达式2.5 2.5 数值运算符与数值表达式数值运算符与数值表达式2.6 2.6 赋值运算赋值运算2.7 2.7 关系与逻辑运算关系与逻辑运算2.8 2.8 条件运算符与逗号表达式条件运算符与逗号表达式2.9 2.9 sizeofsizeof运算符运算符2.10 2.10 表达式的副作用和表达式语句表达式的副作用和表达式语句2006-04-012.1 c+数据类型概述数据类型概述1.基本数据类型基本数据类型基本数基本数据类型据类型整型整型 int 字符型字符型实型实型逻辑型逻辑型单字符型单字符型char宽字符型宽字符型 wchar_t单精度型单精度型float双精度型双精度型doublebool2006-04-012.数据类型修饰符数据类型修饰符signed:有符号:有符号 unsigned:无符号:无符号short:短型:短型 long:长型:长型说明:说明:1)类型修饰符可以修饰除类型修饰符可以修饰除void、bool类型以外的类型以外的其他类型;其他类型;2)上述修饰符均可用于整型和字符型;上述修饰符均可用于整型和字符型;3)long修饰符还适用于双精度浮点数;修饰符还适用于双精度浮点数;2006-04-012.2 C+的基本数据类型的基本数据类型2006-04-01说明:说明:(1)表中的表中的int可以省略,既在可以省略,既在int之前有修之前有修饰符出现时,可以省略关键字饰符出现时,可以省略关键字int;(2)单精度类型单精度类型float、双精度类型、双精度类型double、长、长精度类型精度类型long double统称浮点类型;统称浮点类型;(3)char型和各种型和各种int类型统称整型类型;类型统称整型类型;char型变量在内存中以字符的型变量在内存中以字符的ASCII码值码值的形式存储;的形式存储;(4)字宽(字节)取决于操作系统和编译器字宽(字节)取决于操作系统和编译器的实现,可用的实现,可用sizeof验证;验证;2006-04-01/ch2_1.cpp 测试计算机中数据类型的字节长度测试计算机中数据类型的字节长度#includevoid main()coutchar类型的长度是类型的长度是sizeof(char)endl;cout“宽宽char类型的长度是类型的长度是sizeof(wchar_t)endl;coutint类型的长度是类型的长度是sizeof(int)endl;coutlong类型的长度是类型的长度是sizeof(long)endl;coutfloat类型的长度是类型的长度是sizeof(float)endl;coutdouble类型的长度是类型的长度是sizeof(double)endl;coutlong double类型的长度是类型的长度是sizeof(long double);coutendl;2006-04-012.3 常量与变量2.3.1 变量变量变量是指程序在运行时其值可改变的量。每个变量由一个变量名惟一标识,同时,每个变量又具有一个特定的数据类型。不同类型的变量在内存中占有存储单元的个数不同。2006-04-01变量定义变量定义1.命名变量名命名变量名每个变量都每个变量都必须必须有一个名字有一个名字变量名,变量命名遵循变量名,变量命名遵循标识符命名规则。标识符命名规则。2.标识符命名规则标识符命名规则(1)有效字符:只能由字母、数字和下划线组成,)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。且以字母或下划线开头。(_Num1 ,8NUM,NUM8)(2)有效长度:随系统而异,但至少前个字符有)有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。效。如果超长,则超长部分被舍弃。例如,由于例如,由于student_name和和student_number的前的前个字符相同,有的系统认为这两个变量,是一回事而个字符相同,有的系统认为这两个变量,是一回事而不加区别。不加区别。2006-04-01(3)C+的关键字不能用作变量名。的关键字不能用作变量名。注意:注意:C+对英文字母的大小敏感,即同一字对英文字母的大小敏感,即同一字母的大小写,被认为是两个不同的字符。习惯母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以上,变量名和函数名中的英文字母用小写,以增加可读性。增加可读性。标识符命名的良好习惯标识符命名的良好习惯见名知意见名知意,即通过变即通过变量名就知道变量值的含义。通常应选择能表示量名就知道变量值的含义。通常应选择能表示数据含义的英文单词(或缩写)作变量名,或数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。汉语拼音字头作变量名。例如,例如,name/xm(姓名)、(姓名)、sex/xb(性别)、(性别)、age/nl(年龄)、(年龄)、salary/gz(工资)。(工资)。(4)命名风格:命名风格:my_car,myCar,iMyCar,dMyCar2006-04-013.变量定义方式:变量定义方式:;例如:例如:int a,b,c;double x,y,z;4.变量赋值与初始化变量赋值与初始化数据类型数据类型 标识符标识符1(初始值初始值1),标识符标识符n(初始值初始值n);数据类型数据类型 标识符标识符1=初始值初始值1,标识符标识符n=初始值初始值n;例如:例如:double price=15.5;int size=100;5.typedf 用用typedef可以为一个已有的类型名提供一个同义词可以为一个已有的类型名提供一个同义词例如:例如:typedef double profit;typedef int INT,integer;INT a;profit d;2006-04-012.3.2 常量常量1.整型常量整型常量10进制表示例:进制表示例:132,-3458进制表示例:进制表示例:010,-053616进制表示例:进制表示例:0 x7A,-0X3de2.实型常量实型常量(1)定点数形式定点数形式。它由数字和小数点组成。如:。它由数字和小数点组成。如:0.123,.234,0.0等。等。(2)指数形式。如,指数形式。如,123e5或或123E5都表示都表示123105。要注意要注意E或或e的前面必须要有数字,且的前面必须要有数字,且E后面的指后面的指数必须为整数。数必须为整数。2006-04-013.字符常量字符常量(1)由一对单引号括起的一个字符由一对单引号括起的一个字符表示;表示;(2)其值为所括起字符在其值为所括起字符在ASCII表表中的编码;中的编码;(3)转义序列表示方法:以反斜线转义序列表示方法:以反斜线()开头,后跟字符的开头,后跟字符的ASCII码值;码值;2006-04-01C+中常用转义序列符2006-04-01.字符串常量字符串常量一对双引号括起的字符序列,字符序列可一对双引号括起的字符序列,字符序列可以包含空格、转义序列或任何其他字符,以包含空格、转义序列或任何其他字符,这些字符不一定是这些字符不一定是C+字符集中的字符,字符集中的字符,只要只要C+编译器支持即可编译器支持即可.例如:例如:“This is a string;”“How do you do?”“I am a student.”2006-04-01字符串常量字符串常量字符常量字符常量 字符没有结束符 字符串有一个结束符,该结束符用0表示 用双引号括起 用单引号括起用单引号括起 由一维数组存放由一个字符型变量存放由一个字符型变量存放 字符串常量“a”在内存中占用两个字节字符常量字符常量a在内存中占在内存中占用用 一个字节一个字节 可进行连接、拷贝运算可进行加、减法运算可进行加、减法运算串常量与字符常量的区别:串常量与字符常量的区别:2006-04-01 5.布尔常量布尔常量仅有两个:布尔常量仅有两个:false(假)和(假)和true(真)(真)或:或:1(真)(真)0(假)(假)2006-04-016.枚举常量枚举常量枚举声明枚举声明:enum;由若干个枚举符组成,多个枚举符之间用逗号分由若干个枚举符组成,多个枚举符之间用逗号分隔;隔;枚举符是用标识符表示的整型常量,又称枚举常量;枚举符是用标识符表示的整型常量,又称枚举常量;枚举常量的值默认为最前边的一个为枚举常量的值默认为最前边的一个为0,其后的值依次加,其后的值依次加1;枚举常量的值也可显式定义,未显式定义的则在前一个值枚举常量的值也可显式定义,未显式定义的则在前一个值的基础上加的基础上加1;例如:例如:enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat;enum day Sun=7,Mon=1,Tue,Wed,Tur,Fri,Sat;2006-04-012.3.3 常量定义常量定义定义方法:使用类型说明符定义方法:使用类型说明符const;例如:例如:const int size=80;定义的符号常量必须初始化;定义的符号常量必须初始化;一个符号常量可看作是一个只读变一个符号常量可看作是一个只读变量,由量,由const定义的常量的值不可以定义的常量的值不可以改变;改变;2006-04-012.3.4 宏定义的使用例:例:define pi 3.14说明:define 在c+中不常用,已经被const所取代2006-04-012.4 运算符与表达式在程序中,表达式是计算求值的基本单位,它在程序中,表达式是计算求值的基本单位,它是由运算符和运算数组成的式子。运算符是表是由运算符和运算数组成的式子。运算符是表示进行某种运算的符号。运算数包含常量、变示进行某种运算的符号。运算数包含常量、变量和函数等。量和函数等。C+语言的运算符按其在表达式中与运算语言的运算符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为:对象的关系(连接运算对象的个数)可分为:单目运算(一元运算符,只需一个操作数)单目运算(一元运算符,只需一个操作数)双目运算(二元运算符,需两个操作数)双目运算(二元运算符,需两个操作数)三目运算(三元运算符,需三个操作数)三目运算(三元运算符,需三个操作数)2006-04-01按其在表达式中所起的作用又可分为:按其在表达式中所起的作用又可分为:算术运算符算术运算符+-*/%关系运算符关系运算符 =!=逻辑运算符逻辑运算符!&|位运算符位运算符|&自增自减运算符自增自减运算符+-赋值运算符赋值运算符=及其扩展(及其扩展(+=-=*=/=%=等)等)条件运算符条件运算符?:指针运算符指针运算符*和和&逗号运算符逗号运算符,分量运算符分量运算符*-函数调用运算符()函数调用运算符()下标运算符下标运算符 求字节运算符求字节运算符 sizeof 强制类型转换运算符:(强制类型转换运算符:(type)2006-04-012.2.左值和右值左值和右值 左左值值(left left value,value,缩缩写写为为lvaluelvalue)是是能能出出现现在在赋赋值值表表达达式式左左边边的的表表达达式式。左左值值表表达达式式具具有有存存放放数数据据的的空空间间,而而且且存存放放是是允许的。例如:允许的。例如:int a=3;/a int a=3;/a是变量,所以是变量,所以a a是左值是左值 const const int int b=4;b=4;/b/b是是常常量量,所所以以b b不不是是左值左值 显然常量不是左值,因为显然常量不是左值,因为c+c+规定常量的规定常量的值一旦确定就不能更改。值一旦确定就不能更改。2006-04-01右值(右值(right value,right value,缩写为缩写为rvaluervalue)只能出现在赋值表)只能出现在赋值表达式的右边。左值表达式也可以作为右值表达式。例如:达式的右边。左值表达式也可以作为右值表达式。例如:int a,b=6;int a,b=6;a=b;/b a=b;/b是变量,所以是左值,此处作为右值。是变量,所以是左值,此处作为右值。a=8;/8 a=8;/8是常量,只能作右值,不能作为左值。是常量,只能作右值,不能作为左值。表达式可产生左值、右值或不产生值。例如:表达式可产生左值、右值或不产生值。例如:int a;int a;(a=4)=28;(a=4)=28;/a=4 /a=4是左值表达式,可以被赋以值是左值表达式,可以被赋以值2828。/*28 /*28是右值表达式,而是右值表达式,而a=4a=4是左值表达式(是左值表达式(C+C+的语法的语法规定),所以可以放在赋值语句的左边。该语句表示规定),所以可以放在赋值语句的左边。该语句表示a a的的值使用值使用2828代替刚刚赋给的值代替刚刚赋给的值4 4。*/*/2006-04-012.5 数值运算符与数值表达式 +(加法运算符,或正值运算符,如(加法运算符,或正值运算符,如1+2,+3)-(减法运算符,或负值运算符,如(减法运算符,或负值运算符,如1-2,-3)*(乘法运算符,如(乘法运算符,如1*2)/(除法运算符,如(除法运算符,如1/2)两整数相除,结果取整。两整数相除,结果取整。如:如:5/2结果为结果为2;1/2为为0 浮点数参与除法运算,结果是浮点数。浮点数参与除法运算,结果是浮点数。如:如:5.0/2.0结果为结果为2.5;1.0/2.0为为 0.5%(模运算符或称求余运算符,如(模运算符或称求余运算符,如7%3=1)只能对整数进行操作。只能对整数进行操作。2006-04-01算术类型转换数据类型转换C+中中数数据据类类型型转转换换有有两两类类,即即隐隐式式类类型型转转换和显式类型转换。换和显式类型转换。1.隐式类型转换隐式类型转换是由编译器自动完成的类型转隐式类型转换是由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相同类型后再进行运算,时,会自动将它们转换为相同类型后再进行运算,赋值时会把所赋值的类型转换为与被赋值变量类赋值时会把所赋值的类型转换为与被赋值变量类型一样。隐式类型转换按从低到高的顺序进行,型一样。隐式类型转换按从低到高的顺序进行,如如图图2-1所示。所示。2006-04-01charshortintlong intunsigned charunsigned shortunsigned int unsigned longfloatdoublelong double 2006-04-012.显式类型转换显显式式类类型型转转换换是是由由程程序序员员显显式式指指出出的的类类型型转转换换,转转换形式有两种:换形式有两种:类型名(表达式)类型名(表达式)(类型名)表达式(类型名)表达式这这里里的的“类类型型名名”是是任任何何合合法法的的C+数数据据类类型型,例例如如float、int等等。通通过过类类型型的的显显式式转转换换可可以以将将“表表达达式式”转换成适当的类型。转换成适当的类型。例如:例如:double f=3.6;int n=(int)f;这样这样n n为为3 3。2006-04-012.6 赋值运算2.6.1 赋值运算符赋值运算符(1)赋值运算符)赋值运算符“=”的一般格式为:的一般格式为:变量变量=表达式;表达式;表示将其右侧的表达式求出结果,赋给其左侧的表示将其右侧的表达式求出结果,赋给其左侧的变量。变量。例如:例如:int i;i=3*(4+5);/i的值变为的值变为27(2)赋值表达式本身的运算结果是右侧表达式的值,而)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。结果类型是左侧变量的数据类型。例如:例如:int i=1.2*3;/结果为结果为3,而不是,而不是3.6 2006-04-01(3)赋赋值值运运算算符符的的结结合合性性是是从从右右至至左左的的,因因此此,C+程程序序中中可可以以出出现现连连续续赋赋值值的的情情况况。例例如如,下下面面的的赋赋值是合法的:值是合法的:int i,j,k;i=j=k=10;/i,j,k都都赋赋值值为为10(4)复合赋值运算符:)复合赋值运算符:+=(加赋值),(加赋值),-=(减赋值),(减赋值),*=(乘赋值),(乘赋值),/=(除赋值),(除赋值),%=(取模赋值),(取模赋值),=(右移赋值),(右移赋值),&=(与赋值),(与赋值),=(异或赋值),(异或赋值),|=(或赋值)(或赋值)2006-04-01它们的含义如下:它们的含义如下:a+=b等价于等价于 a=a+ba-=b 等价于等价于 a=a-ba*=b 等价于等价于 a=a*ba/=b 等价于等价于 a=a/ba%=b 等价于等价于 a=a%b例如:例如:int a=12;a+=a;表示表示a=(a+a)=(12+12)=24;又例如:又例如:int a=12;a+=a-=a*=a;表示表示a=a*a /a=12*12=144a=a-a /a=144-144=0a=a+a /a=0+0=02006-04-012.6.2 溢出进行算术运算和赋值运算时,很可能溢出结果。进行算术运算和赋值运算时,很可能溢出结果。发生溢出的原因:发生溢出的原因:是由于一个变量被赋予一个超出其数值类型表示范围是由于一个变量被赋予一个超出其数值类型表示范围的数值。的数值。数值溢出不会引起编译错误,但会使运行结果发生偏差数值溢出不会引起编译错误,但会使运行结果发生偏差例如:在例如:在16位机器上进行如下操作:位机器上进行如下操作:int weight=42896;变量变量weight将得不到将得不到42896,而是得到,而是得到-22640。因。因为有符号整数的表示范围是为有符号整数的表示范围是-3276832767。所以。所以它只能得到它只能得到42896的补码的补码-22640(42896-65536)2006-04-01 思考如下的问题:思考如下的问题:在在16位机器中,做如下操作:位机器中,做如下操作:int x=142896;变量变量x将会得到什么数?将会得到什么数?如果x是2个字节的整数,得到的值为:11824因为:142896=265536+118242006-04-012.6.3 自增、自减运算符(1)自增()自增(+)、自减()、自减(-)运算符为变量的增)运算符为变量的增1和减和减1提供了紧凑格式。提供了紧凑格式。(2)自增、自减运算符都是单目运算符,其作用是使变)自增、自减运算符都是单目运算符,其作用是使变量的值增量的值增1或减或减1。(3)自增、自减运算符有四种应用格式:)自增、自减运算符有四种应用格式:b=a+;等价于等价于 b=a;a=a+1;b=a-;等价于等价于 b=a;a=a-1;(运算符后置用法,代表先使用变量,然后对变量增值)(运算符后置用法,代表先使用变量,然后对变量增值)b=+a;等价于等价于 a=a+1;b=a;b=-a;等价于等价于 a=a-1;b=a;(运算符前置用法,代表先对变量增值,再使用变(运算符前置用法,代表先对变量增值,再使用变量)量)2006-04-012.7 关系与逻辑运算符2.7.1 关系运算符关系运算符1.关系运算符用于两个值进行比较,关系运算符用于两个值进行比较,运算结果为运算结果为true(1)或)或false(0)。)。C+中的关系运算符如下:中的关系运算符如下:(小于),(小于),(大于),(大于),=(大于等于),(大于等于),=(等于),(等于),!=(不等于),(不等于),2.关系运算符都是双目运算符,其结合性是从左到右,关系运算符都是双目运算符,其结合性是从左到右,、=运算符的优先级相同,运算符的优先级相同,=和和!=运算符的运算符的优先级相同,前者运算的优先级高于后者。优先级相同,前者运算的优先级高于后者。3.关系运算符的优先级低于算术运算符。关系运算符的优先级低于算术运算符。例如:例如:a+bc等价于等价于(a+b)c a!=bc 等价于等价于a!=(bc)2006-04-012.7.2 逻辑运算符逻辑运算符&(逻辑与),(逻辑与),|(逻辑或),!(逻辑非)(逻辑或),!(逻辑非)逻辑表达式的结果为真则为逻辑表达式的结果为真则为1,结果为假则为,结果为假则为0。逻辑非(!)是单目运算符,逻辑与(逻辑非(!)是单目运算符,逻辑与(&)与逻)与逻辑或(辑或(|)为双目运算符。)为双目运算符。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑运算真值表如逻辑运算真值表如表表2-3所示。所示。2006-04-01aba&ba|b!a!b0000110非非00110非非000101非非0非非01100表2-3 逻辑运算真值(真为非0,假为0)2006-04-01如果多个表达使用如果多个表达使用&连接,则一个假表达式将使整连接,则一个假表达式将使整个表达式的值为假个表达式的值为假(此处需要处理逻辑知识此处需要处理逻辑知识)。例如:例如:int n=3,m=6;int n=3,m=6;if(n4&m+4&m+10)cout“m should not changed.n”;cout“m should not changed.n”;cout“m=”mendl;cout“m=”m4n4的比较值为的比较值为0 0,所以整个表达式的值不,所以整个表达式的值不用看后面就知道为用看后面就知道为0 0。因此,后面的表达式不被执。因此,后面的表达式不被执行。这样行。这样,m,m的值是的值是6 6而不是而不是7 7。2.7.3 2.7.3 短路表达式短路表达式2006-04-01同理,如果多个表达式用|连接,则第一个表达式为真,整个连接都为真。例如:t=10;If(t80)cout“*:b)?a:b)上面例子定义了一个求两个数上面例子定义了一个求两个数a和和b中最大值,中最大值,其中决定哪一个是最大值用了条件运算符。其中决定哪一个是最大值用了条件运算符。2006-04-01(2)条件运算符的结合性是自右向左。)条件运算符的结合性是自右向左。例如条件表达式:例如条件表达式:ab?a:cd?c:d相当于相当于ab?a:(cd?c:d)(3)条条件件运运算算符符的的优优先先级级别别高高于于赋赋值值运运算算符符,低低于于关关系系运算符和算术运算符。运算符和算术运算符。例如条件表达式:例如条件表达式:ab?a-b:b-a相当于相当于ab?(a-b):(b-a)2006-04-012.8.2 逗号表达式逗号表达式(1)逗号表达式的语法为:逗号表达式的语法为:表达式表达式1,表达式,表达式2,.表达式表达式n C+顺序计算表达式顺序计算表达式1,表达式,表达式2,.表达式表达式n的值。的值。例如:例如:int a,b,c;a=1,b=a+2,c=b+3;由于按顺序求值,所以能够保证由于按顺序求值,所以能够保证b一定在一定在a赋值之后,赋值之后,c一定在一定在b赋值之后。该逗号表达式可以用下面赋值之后。该逗号表达式可以用下面3个有序的个有序的赋值语句来表示:赋值语句来表示:a=1;b=a+2;c=b+3;逗号表达式是有值的,这一点是语句所不能代替的。逗号表达式是有值的,这一点是语句所不能代替的。2006-04-01(2)逗号表达式的值为第逗号表达式的值为第n个子表达式的值,即表达式个子表达式的值,即表达式n的值。的值。例如:例如:int a,b,c,d;d=(a=1,b=a+2,c=b+3);coutdendl;输出结果为:输出结果为:6 上例中输出的结果上例中输出的结果d即为即为c的值。的值。逗号表达式还可以用于函数调用中的参数。例如:逗号表达式还可以用于函数调用中的参数。例如:func(n,(j=1,j+4),k);该函数调用该函数调用3个参数,中间的参数是一个逗号表达式。个参数,中间的参数是一个逗号表达式。括号是必须的,否则,该函数有括号是必须的,否则,该函数有4个参数了。个参数了。C+中,如果逗号表达式的最后一个表达式为左值,中,如果逗号表达式的最后一个表达式为左值,则该逗号表达式为左值。例如:则该逗号表达式为左值。例如:(a=1,b,c+1,d)=5;/ok:即即d=5 2006-04-012.9 sizeof运算符(求字节运算符)运算符(求字节运算符)(1)sizeof运运算算符符是是单单目目运运算算符符,用用于于计计算算运运算算对对象象在在内内存中所占字节的多少,它有两种形式:存中所占字节的多少,它有两种形式:sizeof(类型标识符);(类型标识符);sizeof 表达式;表达式;(2)sizeof可可以以接接受受的的类类型型标标识识符符很很多多,如如sizeof(int)表示求整型数据在内存中所占字节数。表示求整型数据在内存中所占字节数。例例如如:int a,则则sizeof(a)表表示示求求变变量量a在在内内存存中中所占字节数。所占字节数。例如:例如:int a10,则,则sizeof(a)表示求数组)表示求数组a在内在内存中所占字节数。存中所占字节数。2006-04-012.10 求值次序与副作用求值次序与副作用 1.不同的编译器求值顺序不同;不同的编译器求值顺序不同;2.求值顺序使交换律失去作用;求值顺序使交换律失去作用;加法操作我们都知道加法操作我们都知道a+b=b+a。也就是说,交换律成立。而在。也就是说,交换律成立。而在C+中,对简单的表达式,交换律是成立的,但对复合表达式,交中,对简单的表达式,交换律是成立的,但对复合表达式,交换律未必成立。例如:当换律未必成立。例如:当int a=3,b=5,c;时时 c=a*b+b;与:与:c=+b+a*b;在在VC中,运行结果前者为中,运行结果前者为21,后者为,后者为24。3.求值顺序使括号失去作用求值顺序使括号失去作用 在表达式中,括号的优先级是最高的。在表达式中,括号的优先级是最高的。C+中,简单中,简单 的表达式括号优先可以做到,但复合表达式未必如此。例如:的表达式括号优先可以做到,但复合表达式未必如此。例如:int a=3,b=5,c;c=+b*(a+b);2006-04-01 实际在实际在VCVC中得数为中得数为5454而不是而不是4848。这是因为先将括号外面。这是因为先将括号外面的表达式求值。的表达式求值。4.4.消除副作用消除副作用 在我们举的例子中,在我们举的例子中,+b+b是引起副作用的主要操作。是引起副作用的主要操作。+b+b具有具有变量变量b b的修改(副作用)和它所提供的表达式值两个操作。同样的修改(副作用)和它所提供的表达式值两个操作。同样赋值表达式也会引起副作用。例如:赋值表达式也会引起副作用。例如:int a,b=20;int a,b=20;a=(b=25)+b;a=(b=25)+b;解决表达式副作用的方法是分解表达式语句,即将复合解决表达式副作用的方法是分解表达式语句,即将复合表达式语句写成几个简单的表达式语句。例如,前面有副作用的表达式语句写成几个简单的表达式语句。例如,前面有副作用的表达式语句可以分解为下面的两个表达式:表达式语句可以分解为下面的两个表达式:c=b+a*b;b+;c=b+a*b;b+;或者:或者:b+;c=b+a*b;b+;c=b+a*b;2006-04-01

    注意事项

    本文(C课件第2章基本数据类型与表达式.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开