c++学习之表达式


title: c++学习之表达式
date: 2020-10-17 15:17:00
categories: 分类
index_img: /img/articles/vim.jpg
tags:
- 标签1
- 标签2

本文对《Primer C++》中的表达式的零碎知识点进行记录与梳理

表达式

基础

  • c++的表达式要不是右值,要不是左值。当一个对象被用作右值时,用的是对象的值(内容),当一个对象被用作左值时,用的是对象的身份(在内存中的位置)。
  • 对于没有指定执行顺序的运算符来说,如果表达式指向并修改了同一个对象,则会引发错误,并产生未定义的行为,比如,<<运算符没有明确定义何时以及如何对运算对象求值:
int i =0;
cout << i << " " << ++i << endl;
//error: 表达式的结果是未定义的
//编译器可能先求++i,再求i的值,也可能先求i,再求++i

int j = f() + g() * h() + k();
//对于函数f、g、h、k的调用顺序,没有明确的规定
//如果某几个函数会改变同一个对象的值,则该表达式是error,将产生未定义的行为
  • 对于处理复杂的表达式,原则是:a、使用括号来强制让表达式的组合关系符合程序逻辑的要求。b、如果改变了某个对象的值,在表达式的其他地方不要再使用该对象

逻辑与关系运算符

  • 短路求值:逻辑与(&&)、逻辑或(||)运算符都是先求左侧的运算对象的值,再求右侧运算对象的值,当且仅当左侧运算对象无法确定表达式的结果时,才会计算右侧运算对象的值。

递增与递减运算符

  • 建议使用前置版本的递增或递减运算符(++i,--j),减少使用后置版本(i++,j--。因为后置版本需要将原始的值存储下来以便返回,如果我们不需要修改前的值,那么后置版本的操作就是一种浪费。对于复杂的迭代器类型,这样的额外工作消耗将很大。

位运算符

  • 位运算符的对象是整数类型,且整数类型可以是有符号的,也可以是无符号的。如果运算对象为有符号整数,且为负值,则位运算符如何处理运算对象的符号位,依赖于机器平台的实现。c++标准中对于符号位没有明确的规定,因此,建议仅将位运算符用于处理无符号整型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c++入门,简单快捷,很适合c++初学者 目录 目录前篇过程化的程序设计……1 第一章良好的开端……1 1.1 软件与程序……1 1.2 程序设计到底要做什么?……1 1.3 选好一种语言……2 1.4Visual C++ 能够做些什么?……2 1.5 学习程序设计的方法和一些准备……3 第二章 HELLO,WORLD !……4 2.1 如何创建一个示例程序……4 2.2 创建自己的World……6 2.3 输出与输入……7 习题……9 第三章会变的箱子……10 3.1什么是变量?……10 3.2常用的基本数据类型……12 3.3不会变的箱子……12 3.4算术达式……13习题……14第四章要走哪条路?……16 4.1如果…………16 4.2否则…………20 4.3爱判断的问号……234.4 切换的开关……23习题……27第五章有个圈儿的程序……31 5.1程序赛车……31 5.2进维修站和退出比赛……34 5.3圈圈里的圈圈……36 5.4当…………38习题……41第六章好用的工具……45 6.1简单的工具——函数……45 6.2打造自己的工具……48 6.3多功能开瓶器……52 6.4自动的工具……55 6.5给变量和参数起个绰号……56 6.6*函数里的自己……58习题……59第七章好大的仓库……63 7.1方便地让电脑处理更多数据……63 7.2仓库是怎样造成的?……65 目录 7.3 向函数传递数组……69 7.4二维数组……71习题……74第八章内存里的快捷方式……78 8.1什么是指针……78 8.2指针变量的定义和使用……78 8.3指针的操作……80 8.4指针与保护……82 8.5指针与数组……83 8.6指针与函数……84 8.7更灵活的存储……86习题……88第九章自己设计的箱子……91 9.1我的类型我做主……91 9.2设计一个收纳箱……94 9.3结构与函数……96 9.4结构数组与结构指针……98 9.5自行车的链条……100 9.6 链的实现……101 习题……108 中篇实战程序设计……112 第十章如何阅读程序代码……112 10.1整体把握法……112 10.2经验法……114 10.3模拟法……115 习题……116 第十一章如何调试程序代码……120 11.1再谈变量……120 11.2头文件的奥秘……126 11.3更快更好地完成程序调试……130 11.4最麻烦的问题……134 11.5调试工具——Debug ……138 习题……141 第十二章如何编写程序代码……144 12.1程序设计的基本步骤……144 12.2三类问题……144 12.3函数的递归……149 习题……154 后篇面向对象的程序设计……156 第十三章初识对象……156 13.1对象就是物体……156 13.2一个字符串也是对象……156 13.3面向对象特点一:封装性……159 目录 13.4从数组到向量……159 习题……161 第十四章再识对象……16214.1类是一种数据类型……162 14.2公有和私有……163 14.3成员函数……164 14.4对象、引用和指针……167 习题……167 第十五章造物者与毁灭者……171 15.1麻烦的初始化……171 15.2造物者——构造函数……172 15.3先有鸡还是先有蛋?……175 15.4克隆技术……180 15.5毁灭者——析构函数……187 习题……189 第十六章共有财产好朋友操作符……193 16.1有多少个结点?……193 16.2类的好朋友……197 16.3多功能的操作符……205 习题……212 第十七章父与子……213 17.1剑士弓箭手法师的困惑……213 17.2面向对象特点二:继承性……214 17.3继承的实现……214 17.4子类对象的生灭……224 17.5继承与对象指针……228 17.6面向对象特点三:多态性……231 17.7多态与虚函数……231 17.8虚函数与虚析构函数……236 17.9抽象类与纯虚函数……238 17.10 多重继承……241 习题……242 第十八章再谈输入与输出……261

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值