C++基础:第六章 语句
第六章 语句
第1节 语句基础
常见类别:
- 表达式语句,求值后丢弃
2+3;
- 空语句
- 复合语句,用大括号,形成独立的域
顺序语句
- 按先后顺序执行
- 实际执行顺序可能产生变换(编译器优化)
- 与硬件流水线紧密结合执行效率较高
非顺序语句
- 跳转
- 一般情况效率较低
第2节 分支语句
if语句
else 会与最近的if匹配
C++17 常量表达式
if constexpr (常量表达式) //编译器优化,避免不会被执行的分支
{//.....
}
else
{}
带初始化语句的if
if(int y = 3; y>2)
{//...
}
else
{//...
}
int y;
switch语句
条件部分应可以隐式转换成整型或枚举类型,可以包含初始化
case/default标签
[[fallthrough]];
属性
多个case对应同一种处理
case 1:
case 2://......break;
第3节 循环语句
while语句
当不确定循环次数时,或者循环结束后要访问循环变量时,应当使用while循环
do-while语句
对比while循环会至少执行一次循环体
for语句
for(init-statemen;condition;expression)
{statement;
}
基于范围的for循环
语法糖
如果只读取元素,使用常量引用
std::vector<int> v = {0,1,2,3,4};
for(const auto& x : v )
{std::cout << x;
}
如果要对元素执行写操作,推荐使用万能引用(避免bool类型的vector特殊)
std::vector<int> v = {0,1,2,3,4};
for(auto&& x : v ) //万能引用
{x = x + 1;
}
break/continue语句
达夫设备
switch语句和循环语句的嵌套,实现数组等数据结构的遍历
一个循环语句的循环体花费时间较少时,每一次循环花费更多的时间在循环条件判定语句中,为了优化性能减少循环判定次数,引入达夫设备
#include <iostream>int main(int argc, char *argv[]) {const int BUF_CNT = 10000;int buffer[BUF_CNT] = {0};for (size_t i = 0; i < BUF_CNT; ++i) {buffer[i] = i;}//达夫设备求数组中的最大元素int max_buf = buffer[0];int *ptr = buffer;size_t j = 0;switch ( BUF_CNT % 8)for (; j < (BUF_CNT + 7) / 8; ++j) {[[fallthrough]];case 0:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 7:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 6:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 5:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 4:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 3:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 2:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;[[fallthrough]];case 1:max_buf = (*ptr > max_buf) ? *ptr : max_buf;++ptr;}std::cout << max_buf << std::endl;return 0;
}
C++基础:第六章 语句相关推荐
- java基础(六章)
java基础(六章) 一.for循环的使用场合 l while循环--先判断,再循环 while(1.条件表达式){ //2.循环操作 //3.更改循环条件表达式 } l do ...
- 计算机网络按信号频带占用方式,[大学计算机应用基础第六章计算机网络基础.ppt...
[大学计算机应用基础第六章计算机网络基础 第六章 计算机网络基础 中国金桥信息网(CHINAGBN )由原电子工业部归口管理,它是一个把国务院.各部委专用网络与各省市自治区.大中型企业以及国家重点工程 ...
- 大学计算机基础试题第六章,大学计算机基础第六章.doc
大学计算机基础第六章.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <大学计算机基础>第6章作业-.单选题(每小 ...
- 大学计算机基础试题第六章,大学计算机基础第六章作业答案
第六章作业 一单选题(错一题,扣1分) http://www.doczj.com/doc/9acd8d2d4b73f242336c5fb3.htmlN和W AN是两种不同类型的计算机网络,后者可以(D ...
- 算法设计与分析基础 第六章谜题
习题6.1 9.数字填空 给定n个不同的整数以及一个包含n个空格的序列,每个空格之间事先给定有不等(>或<)符号,请设计一个算法,将n个整数填入这n个空格中并满足不等式约束.例如,数4,6 ...
- C++ Primer 第六章 语句
本章内容比较简单,不作过多说明.如果学习过任意一门编程语言可以跳过本章. 转载于:https://www.cnblogs.com/kingcat/archive/2012/05/07/2487764. ...
- Linux基础第六章 信号
6.1 前言 本章简单描述信号.信号是Linux系统中,内核和进程通信的一种方式.如果内核希望打断进程的顺序执行,那么内核会在进程的PCB中记录信号.而当这个进程被分配到CPU,进入执行状态时,首先会 ...
- 经济法基础——第六章第三节综合、与增值税联系较为密切的税种
第三节综合.与增值税联系较为密切的税种
- 统计学习基础——第六章 线性模型选择与正则化
目录 一.子集选择 1.原理 2.最优子集选择 (1)原理 (2)不足:计算效率不高. (3)改进:分支定界法. 3.逐步选择 (1)作用 (2)向前逐步选择 (3)向后逐步选择 (4)混合方法 4. ...
- 应用信息论基础 第六章 最大熵原理及应用 笔记
6.1 基本概念 熵越大,无序性越大. 6.2 最大熵理论的由来 因为这是一个孤立系统. 6.3 最大熵原理 从倒数第三行到倒数第二行: 倒数第三行=∑xλ0p(x)+∑xp(x)∑iλifi(x)= ...
最新文章
- 算法代码中的循环矩阵在哪体现_循环移位可视化理解
- canvas绘制圆形
- 关于Debug和Release之本质区别的讨论
- how to sell products on opensea
- JAVAEE框架之Spring注解
- RedHat 5.4下构建postfix全功能电子邮(七)-extmail extman平台-(下集)
- linux下用c语言打印hellword,用C语言写一个Helloworld_实现第一步编译运行
- 特斯拉最安全的车_特斯拉现在是最受欢迎的租车选择
- 文献引用的标准格式_外语论文文献引用格式—APA Style
- 全面分析RHCE7(红帽认证工程师)考试题目之 ----NFS文件共享 篇
- 一键安装WinRAR主题界面美化
- java删除非空文件夹
- python记账app开发_Python之区块链简单记账本实现
- 熵权法计算权重(java版)
- PMP第五章:项目范围管理
- Glide 缓存机制分析二,内存缓存(3.7.0为例 5)
- 西门子1200控制V90伺服,西门子1200通过PN通讯控制 V90伺服,程序控制采用FB285功能块
- 现控计控中基于留数法Z变换与Z反变换的MATLAB实现
- CP 15 协处理器
- 测视力距离5米还是3米_3米视力表,5米视力表和3米的有什么不同吗?得出来的结果有什......