《C++程序设计》第2章数据类型、运算符和表达式.ppt

《C++程序设计》第2章数据类型、运算符和表达式.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(6)同长度有符号整型数据赋给无符号整型变量时,数据将失去符号位功能。例如: unsigned u=-1;则u的值为65535。 (7)同长度无符号整型数据赋给有符号整型变量时,数据将得到符号位功能。例如: int i=65535u;则i的值为-1。 以上(2)、(5)、(6)、(7)将可能改变所赋数据的值。 §2.6.3 赋值类型转换 §2.6.4 强制类型转换 利用强制类型转换运算符将一个表达式的值强制转换成所需类型。即: (类型名)(表达式) 强制类型转换的作用主要有:①使某些数据(例如实型数据)能够进行某种类型(例如求余)运算②设计四舍五入算法,例如将一个实数保留两位小数:设实数f,则(int)(100*f+0.5)/100.0即可实现该算法。③利用动态存储分配建立链表等等。强制类型转换由于是程序员主动进行的类型转换,一般不会发生意想不到的问题。 本节我们介绍了C语言数据类型转换的问题,在自动类型转换、赋值类型转换和强制类型转换中,我们重点要防止赋值类型转换中存在出现的问题,为此,我们在程序设计时要掌握几条原则: (1)要避免数值的变化:避免signed型与unsigned型之间的数据转换;注意计算或输入中数值范围不超过使用类型的数值范围,以防数据溢出,否则定义较高数据类型。 (2)使用数据类型时应尽量避免丢失精度,必要时定义较高的数据类型 §2.6 数据类型转换-小结 §2.7 编译预处理 2.7.1 宏定义 1.不带参数的宏定义 用一个指定的标识符(即名子)来代表一个字符串,它的一般形式为: #define 标识符 字符串 这就是已经介绍过的定义符号常量。如: #define PI 3.1415926 它的作用是指定用标识符PI来代替“3.1415926”这个字符串,在编译预处理时,将程序中在该命令以后出现的所有的PI都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为“宏名”,在预编译时将宏名替换成字符串的过程称为“宏展开”。#define是宏定义命令。 §2.7 编译预处理 2.带参数的宏定义 这种宏定义不是进行简单的字符串替换,还要进行参数替换。其定义的一般形式为: #define宏名(参数表)字符串 字符串中包含在括弧中所指定的参数。如: #define S(a,b) a*b area=S(3,2); 定义矩形面积S,a是b是边长。在程序中用了S(3,2),用3、2分别代替宏定义中的形式参数a、b,即用3*2代替a*b,因此赋值语句展开为: area=S(3,2); §2.7 编译预处理 2.7.2 文件包含 所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来。即将另外的文件包含到本文件之中。C++提供了#include命令用来实现“文件包含”的操作。其一般形式为 #include 文件名 或 #include 文件名 §2.7 编译预处理 2.7.3 条件编译 一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令有以下几种形式: 第1种形式: #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是当所指定的标识符已经被define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。其中#else部分可以没有,即可以简化为: #ifdef 标识符 程序段1 #endif 这里的“程序段”可以是语句组,也可以是命令行。 §2.8 其他运算符与语句 2.8.1 new和delete运算符 new运算符可以为任意类型的对象或变量在堆中申请一块内存的存储空间,并返回该存储空间的首地址,将该地址作为new运算符的结果返回给引用变量或指针变量。如果未能分配到内存空间,则返回空(NULL)。 new运算符的语法格式如下: new 类型(初值表) 或者 new 类型 delete运算符用于释放new运算符申请的动态内存空间,只能作用与new返回的指针,语法格式: delete 指针变量; 或者 delete[] 指针变量 §2.8 其他运算符与语句 2.8.2作用域运算符 在C语言中,如果全局变量名与局部变量同名,则在局部变量的作用域内会将同名的全局变量隐藏起来,在该作用域内无法再访问同名全局变量。C++提供作用运算符“::”,用以访问被隐藏的全局变量,可以解决全局变量和局部变量同名时所发生的冲突。例如

文档评论(0)

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

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

1亿VIP精品文档

相关文档