p131~p135:

1、除非必要否则不使用后缀加加(减减),会有额外的性能开销。

2、混用解引用和递增运算符。*pointer++,后缀运算符优先于解引用运算符。

3、运算对象可按任意顺序求值,即使是在赋值号两侧也无法确定究竟哪边先求。

p133

1、点运算符和箭头运算符。ptr->mem等价于(*ptr).mem。

2、解引用运算符*优先级低于点运算符.!!!别写*p.size()这样的表达式。(等价于*(p.size()))

p134
1、条件运算符。cond ? expr1 : expr2;先判断cond的真假,然后根据真假决定计算哪一条表达式。

2、嵌套条件运算符。

#include<iostream>
int main()
{
int grade;
std::cin >> grade;
std::cout << ((grade > ) ? "high pass" : (grade < ) ? "fail" : "pass") << std::endl;
return ;
}

3、条件运算符满足右结合律。

4、条件运算符的优先级非常低,通常要在两段加括号:(cond ? expr1 : expr2)

练习 4.17

练习 4.18
跳过第一个元素,从第二个元素开始输出。

练习 4.19
(a)确保ptr指针非空,判断ptr指向元素非零,最后将ptr移动到下一位。
(b)假设ival的值为0,则原式等价与“0 && 1”。
(c)前两个表达式属于短路求值,运算顺序确定,而这个表达试的行为是未定义的:无法确定运算顺序。
改为:vec[ival+1] <= vec[ival]

练习 4.20
a 合法,访问*iter后iter移动到下一个元素。
b 非法,访问*iter,之后将*iter这个元素+1,由于是字符串所以加1操作非法。
c 非法,点运算符优先级高,应该改为(*iter).empty()。
d 合法
e 非法
f 合法

练习 4.21

#include<iostream>
#include<vector>
int main()
{
std::vector<int> ivec = {, , , , , , , , , };
for (int &x : ivec) {
(x % == ) ? x *= : x;
}
for (int &x : ivec) {
std::cout << x << std::endl;
}
return ;
}

练习 4.22

1

#include<iostream>
int main()
{
int grade;
std::cin >> grade;
std::cout << ((grade > ) ? "high pass" : (grade > ) ? "pass" : (grade > ) ? "low pass" : "fail") << std::endl;
return ;
}

2

#include<iostream>
using std::cout;
using std::endl;
int main()
{
int grade;
std::cin >> grade;
if (grade > ) {
cout << "high pass" << endl;
} else if (grade > ) {
cout << "pass" << endl;
} else if (grade > ){
cout << "low pass" << endl;
} else {
cout << "fail" << endl;
}
return ;
}

版本2更容易理解一些。

练习 4.23

#include<iostream>
#include<string>
using std::string;
int main()
{
string s = "word";
// 错误的表达式:string pl = s + s[s.size() - 1] == 's' ? "" : "s";
// 下标运算符[]的优先级最高,最先计算,之后是+、==、?:、=
// 之所以会错是因为按照这个运算顺序会把字符串s + (s[s.size() - 1]和字符's'比较,这是非法的。
string pl = s + (s[s.size() - ] == 's' ? "" : "s");
std::cout << pl << std::endl;
return ;
}

练习 4.24

布吉岛。

c++第二十六天的更多相关文章

  1. javaSE第二十六天

    第二十六天    414 1:网络编程(理解)    414 (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享    414 (2)网络编程模型    414 (3)网络编程的三要素 ...

  2. IT第二十六天 - Swing、上周总结

    IT第二十六天 上午 Swing 1.对于方法的参数如果是int数值类型,应该直接调用该类中的常量属性,而不应该直接填入数字 2.Toolkit类中定义的方法是可以直接访问本地计算机(操作系统)信息的 ...

  3. Python第二十六天 python装饰器

    Python第二十六天 python装饰器 装饰器Python 2.4 开始提供了装饰器( decorator ),装饰器作为修改函数的一种便捷方式,为工程师编写程序提供了便利性和灵活性装饰器本质上就 ...

  4. 孤荷凌寒自学python第二十六天python的time模块的相关方法

    孤荷凌寒自学python第二十六天python的time模块的相关方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 要使用time模块的相关方法,必须在文件顶端引用: import tim ...

  5. JavaScript(第二十六天)【表单处理】

    为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面.   一.表单介绍 在HTML中,表单是由<form>元素来表示的,而在JavaS ...

  6. (93)Wangdao.com_第二十六天_鼠标事件

    鼠标事件 与鼠标相关的事件,继承了 MouseEvent 接口 分类: click        按下鼠标(通常是按下主按钮)时触发.        mousedown 首先触发,mouseup 接着 ...

  7. Python - Socket网络编程 - 第二十六天

    网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高 ...

  8. ThinkPHP第二十六天(JQuery操作select,SESSION和COOKIE)

    1.JQuery操作select,假设<select id="my"> A:双击选项<option>事件,应该是select的dbclick事件. B:获得 ...

  9. 第二十六天 蛰伏的Hibernate遇到春日的暖阳 —Spring MVC 集成Hibernate使用(一)

    6月7日.晴."纷纷红紫已成尘,布谷声中夏令新. 夹路桑麻行不尽.始知身是太平人. "        Hibernate和Spring的香艳相逢,不仅是Bean和Bean之间电光火 ...

随机推荐

  1. 多线程的学习与GDI的学习

    今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的 ...

  2. js如何判断不同的操作系统

    <html> <head> <title>判断操作系统</title> <script type="text/javascript&qu ...

  3. Android英文文档翻译系列(4)——PopupWindow

    public class PopupWindow extends Object //直接继承至Object java.lang.Object ↳ android.widget.PopupWindow  ...

  4. Java初学者笔记三:关于字符串和自实现数组常见操作以及异常处理

    一.字符串常见的操作 1.结合我在python中对于字符串常见处理总结出下面三个应该能算是字符串造作的TOP 3 //字符串查找子串,存在返回index,不存在返回-1 等于python的find: ...

  5. 【BZOJ2743】[HEOI2012]采花 离线+树状数组

    [BZOJ2743][HEOI2012]采花 Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花, ...

  6. 【BZOJ4196】[Noi2015]软件包管理器 树链剖分

    [Noi2015]软件包管理器 树链剖分 Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从 ...

  7. 【Android】安卓中常用的图片加载方法

    一.通过相机选图片: 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  8. Centos6.8下搭建SVN服务器

    1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一 ...

  9. JS判断当前是否是IE浏览器,并返回时IE几?

    原文参考: https://www.cnblogs.com/liuyanxia/p/5855760.html 具体代码示例: 这里返回的是:如果不是IE浏览器返回 -1 ,返回 7/8/9/10/11 ...

  10. 手机相册管理(gallery) ---- HTML5+

    模块:gallery Gallery模块管理系统相册,支持从相册中选择图片或视频文件.保存图片或视频文件到相册等功能.通过plus.gallery获取相册管理对象. 管理我们手机上用到的相册:选择图片 ...