第2章+开始C++之旅.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.4.11 sizeof运算符与sizeof表达式 sizeof是个单目运算符,用来计算操作数在内存中占据的字节数,其操作数既可以是括在圆括号中的类型标识符,其返回值是size_t类型,即无符号整数,如: sizeof(short); //返回2 sizeof(long); //返回4 sizeof(int); //不确定,取决于不同的系统 也可以是一个表达式,如: short x; sizeof(x); //返回2 2.4.12 运算符的优先级和结合性 实际书写程序的时候,一个表达式中往往有多个运算符,这时的运算顺序主要由两种因素决定: (1)运算符的优先级:程序总是先执行优先级较高的运算符; (2)运算符的结合性:当同优先级的操作符并列时,运算符的结合性决定运行顺序。对从左到右的运算符,先执行左边的部分,对从右向左的运算符,则先执行右侧的部分。 给出了C++中的运算符优先级和结合性,从上到下,优先级依次降低。 总的来说,有以下几点规律: 操作数多的运算符优先级别相对低一点,从高到低:单目→双目(不包含赋值运算符)→三目→赋值→逗号; 双目运算符个数最多,双目运算符优先级从高到低依次为:算术运算符→比较运算符→位运算符→逻辑运算符; 算术运算符中,*、/、%的优先级高于+、-; 位运算符优先级从高到低为:~→→^→|; 逻辑运算符优先级从高到低为:!→→||; 赋值运算具有相同的优先级。 2.5 类型转换 C++中有整型、浮点型、布尔型、字符型等基本类型,在后面的章节中还会介绍到复杂数据类型和用户自定义的类型。在进行运算,尤其是对不同的类型进行运算时,可能会引发混乱,为此,C++引入了类型转换机制,一种数据类型能够被转换为另一种数据类型。 2.5.1 赋值转换 赋值转换指的是将一种类型的值赋给另一种类型的变量,这时,值将会转换为接收变量的类型,如语句: A=B; 如果A是long型,B是short型,则程序会将16位(short占两字节)的B提升为32位(long占4字节),并赋给A,直观上讲,类型的表达能力取决于该类型所占的内存位数,从表达能力低的类型转换为表达能力高的类型,即进行字节的扩充通常不会带来什么弊端,将short型值赋值给long型变量并不会改变这个值,只是占用的字节多了而已,但其他一些情况下可能会出现一些转换问题。 (1)将较大的整型(表达能力强)转换为较小的整型 (2)浮点型转换为整型 (3)较大的浮点型转换为较小的浮点型 (4)整型转换为浮点型 (5)对bool类型进行赋值 2.5.2 表达式中的转换 当同一个表达式中出现不同类型的量时,C++会根据不同的情况对操作数进行自动转换,这些转换可分为“整型提升”(integral promotion)和“运算时的转换”两类。 (1)整型提升 在表达式计算中,C++将bool、char、unsigned char、signed char、short和signed short型值都会自动转换成int型,对bool类型而言,true转换为1,false则转换为0。注意:unsigned short向int的转换比较特殊:如果系统中int占4字节,这unsigned char会转换成int,但若系统中int占两字节(即int和short同样长度),则unsigned short会转换成unsigned int,这就避免了数据的丢失。 (2)运算时的转换 当运算涉及到两种类型时,较小的类型将会被转换成较大的类型,换言之,表达力低的类型将会被转换成表达力高的类型。各类型表达能力从低到高排列为: int(等价于signed int)→ unsigned int → long(等价与signed long) → unsigned long → float → double→long double 2.5.3 强制类型转换 C++引入了强制类型转换机制来显式地进行类型转换,强制类型转换的格式有两种,举例来说,为了将double型变量x转换为long型,可使用下列语句中的任意一个: (long) x; long (x); 第一种格式,即“(类型名)值”这种写法是C语言的用法,而第二种格式,即“类型名(值)”是纯粹的C++用法,这样,类型名等价于一个函数,而要转换的值等价于该函数的参数,函数返回值即是目的类型值。 注意:不论是强制类型转换,还是隐式的赋值转换和表达式中的转换,都不会改变变量的值,而是创建一个新的、指定类型的值,因此,不仅仅可对变量进行类型转换,对常量的显式转换也是合法的,如: int (3.14); float(3.1415926535897); 2.5.4 函数调用、传递参数时的类型转换 在函数调用时,C++函数的原型声

文档评论(0)

xiaohuer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档