第六章 语句

第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++基础:第六章 语句相关推荐

  1. java基础(六章)

    java基础(六章) 一.for循环的使用场合 l  while循环--先判断,再循环 while(1.条件表达式){      //2.循环操作      //3.更改循环条件表达式 } l  do ...

  2. 计算机网络按信号频带占用方式,[大学计算机应用基础第六章计算机网络基础.ppt...

    [大学计算机应用基础第六章计算机网络基础 第六章 计算机网络基础 中国金桥信息网(CHINAGBN )由原电子工业部归口管理,它是一个把国务院.各部委专用网络与各省市自治区.大中型企业以及国家重点工程 ...

  3. 大学计算机基础试题第六章,大学计算机基础第六章.doc

    大学计算机基础第六章.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <大学计算机基础>第6章作业-.单选题(每小 ...

  4. 大学计算机基础试题第六章,大学计算机基础第六章作业答案

    第六章作业 一单选题(错一题,扣1分) http://www.doczj.com/doc/9acd8d2d4b73f242336c5fb3.htmlN和W AN是两种不同类型的计算机网络,后者可以(D ...

  5. 算法设计与分析基础 第六章谜题

    习题6.1 9.数字填空 给定n个不同的整数以及一个包含n个空格的序列,每个空格之间事先给定有不等(>或<)符号,请设计一个算法,将n个整数填入这n个空格中并满足不等式约束.例如,数4,6 ...

  6. C++ Primer 第六章 语句

    本章内容比较简单,不作过多说明.如果学习过任意一门编程语言可以跳过本章. 转载于:https://www.cnblogs.com/kingcat/archive/2012/05/07/2487764. ...

  7. Linux基础第六章 信号

    6.1 前言 本章简单描述信号.信号是Linux系统中,内核和进程通信的一种方式.如果内核希望打断进程的顺序执行,那么内核会在进程的PCB中记录信号.而当这个进程被分配到CPU,进入执行状态时,首先会 ...

  8. 经济法基础——第六章第三节综合、与增值税联系较为密切的税种

    第三节综合.与增值税联系较为密切的税种

  9. 统计学习基础——第六章 线性模型选择与正则化

    目录 一.子集选择 1.原理 2.最优子集选择 (1)原理 (2)不足:计算效率不高. (3)改进:分支定界法. 3.逐步选择 (1)作用 (2)向前逐步选择 (3)向后逐步选择 (4)混合方法 4. ...

  10. 应用信息论基础 第六章 最大熵原理及应用 笔记

    6.1 基本概念 熵越大,无序性越大. 6.2 最大熵理论的由来 因为这是一个孤立系统. 6.3 最大熵原理 从倒数第三行到倒数第二行: 倒数第三行=∑xλ0p(x)+∑xp(x)∑iλifi(x)= ...

最新文章

  1. 算法代码中的循环矩阵在哪体现_循环移位可视化理解
  2. canvas绘制圆形
  3. 关于Debug和Release之本质区别的讨论
  4. how to sell products on opensea
  5. JAVAEE框架之Spring注解
  6. RedHat 5.4下构建postfix全功能电子邮(七)-extmail extman平台-(下集)
  7. linux下用c语言打印hellword,用C语言写一个Helloworld_实现第一步编译运行
  8. 特斯拉最安全的车_特斯拉现在是最受欢迎的租车选择
  9. 文献引用的标准格式_外语论文文献引用格式—APA Style
  10. 全面分析RHCE7(红帽认证工程师)考试题目之 ----NFS文件共享 篇
  11. 一键安装WinRAR主题界面美化
  12. java删除非空文件夹
  13. python记账app开发_Python之区块链简单记账本实现
  14. 熵权法计算权重(java版)
  15. PMP第五章:项目范围管理
  16. Glide 缓存机制分析二,内存缓存(3.7.0为例 5)
  17. 西门子1200控制V90伺服,西门子1200通过PN通讯控制 V90伺服,程序控制采用FB285功能块
  18. 现控计控中基于留数法Z变换与Z反变换的MATLAB实现
  19. CP 15 协处理器
  20. 测视力距离5米还是3米_3米视力表,5米视力表和3米的有什么不同吗?得出来的结果有什......

热门文章

  1. LeetCode每日一题——无重复字符的最长子串
  2. Oracle 11gR2 sessions=1.5*processes+22
  3. 第四次作业(胡明浩)
  4. Linux下的C程序如何调用系统命令,并获取系统的输出信息到C程序中
  5. C# 如何实现记住密码功能
  6. 【项目分析】利用J#类库解决项目中数据压缩以及解压的问题
  7. 刚刚,2021 ACM Fellow放榜!李飞飞、谢涛、刘铁岩等13名华人学者当选
  8. 一文看尽2019年NLP前沿突破
  9. 逼疯一个程序员有多简单?
  10. 注意力机制可解释吗?这篇ACL 2019论文说……