c++第二十六天
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++第二十六天的更多相关文章
- javaSE第二十六天
第二十六天 414 1:网络编程(理解) 414 (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享 414 (2)网络编程模型 414 (3)网络编程的三要素 ...
- IT第二十六天 - Swing、上周总结
IT第二十六天 上午 Swing 1.对于方法的参数如果是int数值类型,应该直接调用该类中的常量属性,而不应该直接填入数字 2.Toolkit类中定义的方法是可以直接访问本地计算机(操作系统)信息的 ...
- Python第二十六天 python装饰器
Python第二十六天 python装饰器 装饰器Python 2.4 开始提供了装饰器( decorator ),装饰器作为修改函数的一种便捷方式,为工程师编写程序提供了便利性和灵活性装饰器本质上就 ...
- 孤荷凌寒自学python第二十六天python的time模块的相关方法
孤荷凌寒自学python第二十六天python的time模块的相关方法 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 要使用time模块的相关方法,必须在文件顶端引用: import tim ...
- JavaScript(第二十六天)【表单处理】
为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 一.表单介绍 在HTML中,表单是由<form>元素来表示的,而在JavaS ...
- (93)Wangdao.com_第二十六天_鼠标事件
鼠标事件 与鼠标相关的事件,继承了 MouseEvent 接口 分类: click 按下鼠标(通常是按下主按钮)时触发. mousedown 首先触发,mouseup 接着 ...
- Python - Socket网络编程 - 第二十六天
网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高 ...
- ThinkPHP第二十六天(JQuery操作select,SESSION和COOKIE)
1.JQuery操作select,假设<select id="my"> A:双击选项<option>事件,应该是select的dbclick事件. B:获得 ...
- 第二十六天 蛰伏的Hibernate遇到春日的暖阳 —Spring MVC 集成Hibernate使用(一)
6月7日.晴."纷纷红紫已成尘,布谷声中夏令新. 夹路桑麻行不尽.始知身是太平人. " Hibernate和Spring的香艳相逢,不仅是Bean和Bean之间电光火 ...
随机推荐
- 盒子模型 W3C中和IE中盒子的总宽度分别是什么
W3C盒模型 总宽度 = margin-left + border-left + padding-left + width + padding-right + border-right + margi ...
- 5个基于Web的建模工具
本文介绍 5 款很棒的直接可以在浏览器使用的建模工具,无需单独安装软件. 1. Creately提供在线图表和协助功能,包含多种建模语言(UML)支持,这里有一个简单的演示:here 2.Diagra ...
- 【linux】Centos下登陆mysql报错#1045 - Access denied for user 'root'@'localhost' (using password: NO)
创建mysql 远程链接 grant all privileges on *.* to 'test'@"%" identified by "test666 with g ...
- LeetCode——Number of 1 Bits
//求一个整数的二进制串中1的个数 public int hammingWeight(int n) { String b_str = Integer.toBinaryString(n); int b_ ...
- min-height的兼容性问题
1.经测试 IE+和其它主流浏览器均支持min-height属性,已经满足目前的需求. 2.当height和min-height同时设置时,浏览器自动选择数值更大的一个(测试IE7+及其他主流浏览器) ...
- 3149: [Ctsc2013]复原
3149: [Ctsc2013]复原 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 95 Solved: 44[ ...
- 【算法】N Queens Problem
/* ** 目前最快的N皇后递归解决方法 ** N Queens Problem ** 试探-回溯算法,递归实现 */ #include "stdafx.h" #include & ...
- Centos6.8下搭建SVN服务器
1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一 ...
- linux查看日志文件内容命令tail、cat、tac、head、echo、vi
linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...
- 使用log4net做应用程序全局日志记录保存在数据库中
几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.经验表明,日志记录往往 ...