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. orcale 闪回操作 已提交的修改 给还原

    delete from conf_ty_parser_title; INSERT INTO conf_ty_parser_title ( SELECT * FROM conf_ty_parser_ti ...

  2. UIImageView 和 UIWebView 小结

    本文转载至:http://www.cnblogs.com/huangdongcheng/archive/2011/11/21.html 1.UIImageView的讲解 (1)初始化 UIImageV ...

  3. Django学习笔记 Django的工程目录

    mysite├── manage.py 管理项目:包括数据库建立.服务器运行.测试……└── mysite    ├── __init__.py     ├── settings.py 配置文件:应用 ...

  4. CSS 3D的应用记录

    为父元素添加以下样式后,子元素即可使用3D属性,例如translateZ /*设置子元素也应用3D效果*/-webkit-transform-style: preserve-3d;-moz-trans ...

  5. windows下的mysql迁移到linux下

    最近做毕业设计,需要把windows下的mysql移植到linux下 曾经有过在window下移植mysql数据库的经验,只需要把msql的数据文件复制到另一台安装mysql的机器的数据存放位置,然后 ...

  6. 【Mac】Docker安装及基础使用

    Docker 安装 在 Mac OS X 系统中,首先你要下载安装包安装:Docker Toolbox 安装过程中,可以选择是否安装 Docker Machine,Docker Compose 等,默 ...

  7. MySQL命令行基本命令操作

    进入命令模式后, 显示所有数据库 show databases; 选定某个数据库 use 数据库名; 创建数据库 create database 数据库名; 删除数据库 drop table 数据库名 ...

  8. 微信小程序 --- https请求

    wx.request发起的是 https 请求,而不是 http 请求.一个小程序 同时 只能有 5个 网络请求. 参数: url:开发者服务器接口地址: data:请求的参数: header:设置请 ...

  9. Linux系统下Nginx+PHP 环境安装配置

    一.编译安装Nginx 官网:http://wiki.nginx.org/Install 下载:http://nginx.org/en/download.html # tar -zvxf nginx- ...

  10. 03.JMS深入

    1.JMS API     JMS API可以分为3个主要部分:公共API.点对点API和发布/订阅API.在JMS1.1中,公共API可被用于向一个队列或主题发送消息,或从其中接收消息.点对点API ...