第1章C++基础知识汇总.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1)():圆括号,用于改变优先级,圆括号内的部分首先计算。 (2)[]:数组元素的下标运算符或数组大小定义运算符,其内的部分首先计算。 (3). 和-:用于结构体、共用体变量。 (4)sizeof:计算一数据类型或一表达式占用内存的字节数。例如, sizeof(int) 或 sizeof(表达式) (5)强制类型:作用于一表达式,使表达式的类型强制性转换为指定类型。例如, (int)(a+b+1.234567) C++的优先级和结合性比较复杂,通过下面的总结,可以记住: 除最高级和最低级外,其他运算符的优先级是“一二三赋值”。 最高级是圆括号、下标、点、箭头;最低级是逗号。“一二三赋值”分别指单目、双目、三目、赋值运算符,它们的优先级也是按此顺序。这样分出了6大类优先级。在双目运算符中,有10级,顺序是:算术(除求负值运算外分2级)、移位、关系(分2级)、逻辑位(除按位取反运算外分3级)、逻辑(除逻辑非运算外分2级)。 单目、三目、赋值运算符的结合性是从右至左,其他运算符的结合性是从左至右。 【例1.15】运算符的优先级和结合性。 程序代码如下: //*****ex1_15.cpp***** #include iostream using namespace std; void main() { int x,y,z; x=!-5+312; y=x---(-1); coutx=x\ty=yendl; z=xy?x--y?x:y:x*y; coutsizeof(int)=sizeof(int) \tsizeof(z)=sizeof(z)endl; coutx=x\ty=y\tz=zendl; } 程序的运行结果如下: 在例1.15中,语句x=!-5+312;的计算顺序是:第一步先计算单目运算,单目运算有两个: !和-,按从右至左的结合性,先计算-5,再计算 !(-5),结果为0;第二步计算算术运算0+31;第三步计算右移运算,结果为7,即x=7。 语句y=x---(-1);中间有三个---,前两个是减1单目运算,后一个是算术减运算。计算顺序是:第一步计算x--,使x=6,这是减1表达式的副作用,并不计算在y=x---(-1);语句中,所以语句y=x---(-1);变为y=7-(-1),结果使y=8。这时要注意x的值因为副作用发生了变化,即x=6。所以在第一条cout语句输出时x=6、y=8。 语句z=xy?x--y?x:y:x*y;中有单目运算,先计算之,--y的结果表明为7,故语句变成z=xy?x7?x:y:x*y;,语句中有两个三目表达式,三目表达式中的“?”和“:”分别相当于前圆括号“(”和后圆括号“)”,成对出现。按从右至左的结合性,先找最右边的“?”,再找与之最近匹配的“:”,得其表达式为:x7?x:y,结果取x的值6。从而整个语句变成z=xy?6:x*y;,所以z=6。在这条语句中,x的值没改变,y的值变为7,故在第三条cout语句输出时x=6、y=7、z=6。 1.7.10 类型转换 C++的数据类型转换灵活,表现在它的许多数据类型之间具有自动(隐含)转换功能,当然也可以使用强制类型转换功能。 (1)隐含自动转换,从低类型向高类型转换 char型和short型自动转换为int型;unsigned char型和unsigned short型自动转换为unsigned型;float型自动转换为double型。 (2)在各类数值型数据进行混合运算时,系统自动将参与运算的各类数据类型转换为它们之间数据类型最高的类型。在C++中,数据类型从低到高的类型顺序为: int (short,char)→unsigned(unsigned short,unsigned char)→long→double(float) (3)在赋值表达式中,系统自动将赋值运算符右边的表达式的数据类型转换为左边变量的类型。在这种转换中,从低类型向高类型的转换是保值的,从高类型向低类型的转换是不保值的(即转换有数据精度损失)。 (4)强制转换格式是: (数据类型说明符)表达式 使表达式的类型强制转换成数据类型说明符说明的数据类型。强制转换可能是不保值的。强制转换是一次性的,例如: int x=1,y=2,z=3; coutsizeof((double)(x*y*z)); 第二行语句中,表达式强制为double型,下次再出现表达式x*y*z时,又是整型。 【例1.16】类型转换。 程序代码如下: //*****ex1_16.cpp***** #include iostream using namespace std; void main() { int x=1,y=2,z=3;

文档评论(0)

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

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

1亿VIP精品文档

相关文档