相关博客目录
C++程序设计基础学习笔记:(1)初识C++语言:从认识变量和常量开始,数据的表示
C++程序设计基础学习笔记:(2)计算:从数据运算开始,数据简单运算
C++程序设计基础学习笔记:(3)分支结构:无处不在的抉择
C++程序设计基础学习笔记:(4)循环结构:周而复始,求同存异
C++程序设计基础学习笔记:(5)数组:实现算法的利器
C++程序设计基础学习笔记:(6)指针:所向披靡的“金箍棒” 魂
C++程序设计基础学习笔记:(7)函数:面向过程的基础
C++程序设计基础学习笔记:(8)文件:让数据流动起来
C++程序设计基础学习笔记:(9)以人为本:用类与对象诠释现实世界
C++程序设计基础学习笔记:(10)从生物遗传说起,取其精华——继承与多态
第2章 计算:从数据运算开始,数据简单运算
2.1 表达式和算术运算
解决问题
运算符和表达式怎么表示?
表达式运算执行顺序如何计算?
算术运算与数学比较有哪些特别?
由运算符和运算对象组成的式子称为表达式。
表达式的结果除了确定的值之外,还有确定的数据类型。
表达式的运算对象可以是常量、变量、函数调用和嵌套的表达式等。
C++运算符常用分类
表达式运算顺序
当表达式中出现不同类型的运算符时, 如何确定运算顺序?
根据运算符的优先级(Order of Precedence) —从高到低运算C++运算符优先级分为18级,1级最高,18级最低
当表达式中出现运算符的优先级相同时, 如何确定运算顺序?
利用运算符的结合性(Associativity)
右结合—从右向左计算,如:单目运算符、赋值运算符、条件运算符
左结合—从左向右计算,如:双目运算符其结合性为从左向右
巧妙使用圆括号改变运算顺序——从内往外运算
算术运算符优先级
先乘除求余,后加减,级别相同的从左向右逐个运算
圆括号可以改变优先级
%和*,/ 优先级别相同
算术运算及其描述
算术运算中,乘法运算符不能省略
除数运算时,注意加括号的使用
用函数表达复杂算术运算
针对整型数据的求余用%
2.2 自增自减和赋值运算
赋值运算:
变量 = 表达式;
- 1
问题:赋值运算符和数学中的等号有何区别?
1.有方向性,右边计算的结果赋值给左边的变量
2.左边和右边的数据类型应一致;
3.左边和右边的数据类型如果不一致,右边的数据类型转换成左边的数据类型
复合运算符及其优先级
自增和自减
前置(前缀式)和后置(后缀式)运算:
++i或–i:前置是先增减后引用,即先对变量自加或自减,用新的值参与其他运算;
i++或i–:后置则是先引用后增减,即用变量原来的值参与其他运算,然后再对变量进行自加或自减。
2.3关系运算和逻辑运算
关系运算:对运算对象的“大小”关系的判断;
比较运算:其结果是成立或不成立,也就是为真或假
关系运算符
关系运算的优先级
逻辑运算
逻辑运算:表达、判断多个条件之间的关系;单个变量或常量也可作为条件
逻辑运算的短路求值:如果判断了前面的条件,已经能得到表达式的结果,就不再计算后面的条件
逻辑运算符的优先级
2.4特殊运算符
字节数运算符sizeof()
条件运算符?:
逗号运算符
优先级和运算符
2.5混合运算和类型转换
隐式转换:运算转换
所谓隐式转换,是指不需要用户干预,编译器进行的类型转换。
转换的时机
运算转换:不同数据类型混合运算时
赋值转换:把一个值赋给与其数据类型不同的变量时
输出转换:输出时转换成指定的输出格式运算转换规则
不同类型的数据运算时,先转换成同一类型再运算
赋值时,右边的数据转换成左边变量的数据类型
输出时,按照cout指定格式转换
自定义对象 子类对象可以隐式的转换为父类对象转换原则:确保计算值的精度。转换后尽可能不丢失有效数字。
字节少的向字节多的转换
精度低的向精度高的转换
有符号向无符号转换
隐式转换:赋值转换
显式转换
程序中明确标记转换的类型,就是显式转换,也就是强制类型转换
格式
<类型> (<表达式>) (<类型>) <表达式>
- 1
- 2
2.6 程序调试和变量跟踪
程序调试的任务和目的
程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试和修错,修正语法错误和运行错误等错误的过程。根据所发现的错误,进一步诊断,找出原因和具体的位置进行修正。
是程序发开人员的任务,调试的目的是对程序中错误修正,为了说明程序是正确的,是一个排错的过程。调试分静态调试和动态调试
程序调试
语法错误(编译时产生):
错误(error):无法成功编译,需修改正确才能生成目标文件;
警告(warning):可运行,但结果可能不正确;
连接错误(连接或生成时产生):
程序中引用了不存在的函数。
编译环境有问题,导致出错。
运行错误:
异常错误:在运行时产生的错误,如除法中除数为零,空间不足等;
逻辑错误:程序可运行,但出现结果与预期设计不一致的错误;
评论记录:
回复评论: