模板网站最大缺点,wordpress 安全插件,制作网页的第一步是什么,企业融资方案范本系列文章目录
C primer plus 第一节 步入C-CSDN博客 C primer plus 第二节 hello world刨析-CSDN博客 C primer plus 第三节 数据处理-CSDN博客 C primer plus 第四节 复合类型-CSDN博客 文章目录 系列文章目录 文章目录 前言 一 for循环 总结 前言
由于作者看了后面的内容 primer plus 第一节 步入C-CSDN博客 C primer plus 第二节 hello world刨析-CSDN博客 C primer plus 第三节 数据处理-CSDN博客 C primer plus 第四节 复合类型-CSDN博客 文章目录 系列文章目录 文章目录 前言 一 for循环 总结 前言
由于作者看了后面的内容觉得只要有点深入学过C语言就可以知道所以这里就直接讲述一点下一节直接讲述面向对象 一 for循环 1 for循环关键词 for循环后面跟了一个括号像一个函数的调用但是for在C里面已经定义为一个关键词了所以编译器不会把他当作一个函数来看待这还可以防止将函数名字命名为for 2 C新增的语法规则 int x;
int y;
int z;
x y z 0; 这种方法可以快速的将若干个变量设置为相同的值 3 表达式和语句 在我们之前学习C语言的时候基本都是见到的为明显的表达式 1 明显表达式 2227这个一般都知道为49 2 不明显表达式 一般都是由两个值和一个运算符号组成 x 20 这个就是表示20 maids (cooks 4) 3; 这个maids为7 虽然这个不常见但是我们也需要直到接下来我们用vm来验证一下 我们可以看到这个x100是可以给x赋值的然后就是我们使用了ios_base::boolaplose来把这个0与1转换为bool类型买这个是可以设置的 3 有副作用的表达式 - 例子x 15 - 解释x表示将x的值加1然后返回新的值。因此x 15不仅计算了一个结果x 15还改变了x的值x被加1这种改变就是副作用 4 副作用和顺序点 1 副作用和顺序点的定义 副作用指的是在计算表达式时对某些东西(如存储在变量中的值)进行了修改 顺序点是程序执行过程中的一个点在这里进入下一步之前将确保对所有的副作用都进行了评估在C中语句中的分号就是一个顺序点这个副作用一般我们见到的就是或者-- 顺序点是有助于阐明后缀递增是何时进行例如看下面的代码 while(guest10)cout guest endl; 这个是可以从x打印到10的循环 但是这种顺序点弄的表达式会有些许问题就比如 y (4 x) (6 x) 这个表达式就是根据顺序点进行书写的 由于副作用的执行顺序不确定这段代码可能产生未定义行为Undefined Behavior) 例如假设初始时 X 1 - 如果编译器先计算 (4 X)此时X为1结果为5然后X变为2 - 接着计算 (6 X)此时X为2结果为8然后X变为3 - 最终结果为 5 8 13 但编译器也可以这样执行 - 先计算 (4 X) 和 (6 X)此时X为1两个子表达式的结果分别为5和7 - 然后统一将X增加2因为有两个X最终X为3 - 最终结果为 5 7 12 ✅理解 由于C标准没有规定副作用的具体执行顺序因此这种代码的输出是不确定的属于未定义行为所以C文档中就不再用顺序点这个东西了由于和--这个两个有确定性不可具体的描述 5 前缀格式和后缀格式 #includeiostream
using namespace std;int main() {for (int i 1;i 10;i) {cout i ;}cout endl;for (int i 1;i 10;i) {cout i ;}cout ;return 0;
} 我们来看这个for循环步长表达式 这两个打印的都是一样的但是其实这两个还是有很大的差别的 1语义区别 - i前缀递增先将i的值增加1然后返回增加后的值 - i后缀递增先返回i的当前值然后将i的值增加1 在for循环的迭代部分如i或i这种区别通常不会影响循环的逻辑因为它们都被用来更新循环变量i而循环条件是基于i的值来判断的 2效率区别 - i直接返回增加后的值没有额外的临时变量 - i需要返回i的当前值然后增加i的值。这意味着编译器可能需要创建一个临时变量来存储i的当前值从而导致一些额外的开销 在简单类型如int的情况下这种开销通常可以被编译器优化掉因此在实际运行中可能看不出效率差异。但在复杂类型如自定义类或迭代器的情况下i可能会比i更慢因为i需要创建一个临时对象来存储当前值 6 逗号运算符号 用途一用于for循环的步长表达式 for(int i 1; in ; i,j--) 这个就是逗号运算符号的用途可以用于这个步长表达式 这个实际用的比较多的地方是把数组里面的值进行互换顺序这个就比较常用 用途二确保表达式的安全性 C给这个运算符号添加了一个特性就是它确保先计算第一个表达式然后计算第二个表达式(换句 话说逗号运算符是一个顺序点) 如i 20,j 2 * i先处理 i再处理 j 用途三逗号表达式的值是第二部分的值 cat 17,240; 是被解释为(cat 17),240 这个就是把cat存储17后面的240不起任何作用 (cat 17,240) 这个由于括号的优先级别最高所以cat是240 根据用途二可以这么解释 ✅第一个表达式 步骤1先计算cat 17。这会将cat的值设置为17并且cat 17的值也是17 步骤2然后计算240。240是一个独立的表达式它的值是240 ✅第二个表达式 步骤1先计算cat 17。这会将cat的值设置为17并且cat 17的值是17 步骤2然后计算240。240是一个独立的表达式它的值是240 结果逗号表达式的值是240因为逗号表达式的值是最后一个子表达式的值 最终结果由于整个表达式被括号包围它的值是240。因此cat的值最终被设置为240 总结
这里的循环章节就没有全部写完了博主看了一下后面其实是一些不常用的等到开发阶段遇到那些问题再来学也没问题我们下一节直接启动类与面向对象 我们学习 for循环的关键词语 新增语法 明显表达式和不明显表达式 副作用表达式 副作用和顺序点的概念 前缀与后缀的效率在for循环与不同点 逗号运算符的作用