1、01-01-BITS208BITS208C + Primer PlusC + Primer Plus01-01-225chapter循环和关系表达式01-01-33本章内容包括:C C 语言和 C+ C+ 的发展历史和基本原理。过程性编程技术和面向对象技术。C + C + 是如何在 CC语言基础上添加面向对象概念的。 是如何在 语言的基础上添加通用编程概念的。编程语言的标准。 创建程序的技巧 。01-01-44本章内容包括:FORFOR循环表达式和语句。递增操作符和递减操作符:和 。组合赋值操作符。复合语句(语句块)。 逗号操作符。关系操作符: ,=, =,=, =,#include it m
2、ain()it main()using amespace std;using amespace std;it i; / crt ounterit i; / crt ounter/ initalize; tst ;pdat/ initalize; tst ;pdatfor (i = 0; iusig nampc std;cont it ArSize = 16; / example of extrnal declartionit main() double factorialsArSize; factrils1 = fctorials0 = 1.0; / int i; for (it i= 2;
3、iit main() using amespace std; it a = 20; int b ;cout it main() using amespace std;cot numbr; sum += er; / block ends her 01-01-445.1.95.1.9组合赋值操作符cout 1为 false,因此循环结束01-01-665.1.95.1.9组合赋值操作符2.2.逗号操作符花絮逗 号 操 作 符 最 常 见 的 用 途 是 将 两 个 或 更 多 的 表 达 式 放 到一 个 forfor循 环 表 达 式 中 。 不 过 C+C+还 为 这 个 操 作 符 提 供
4、了另 外 两 个 特 性 。 首 先 , 它 确 保 先 计 算 第 一 个 表 达 式 , 然后 计 算 第 二 个 表 达 式 ( 换 句 话 说 , 逗 号 操 作 符 是 一 个 顺序点)。如下所示的表达式是安全的:i=20,j=2i=20,j=2*i /I set o 20,j set o 40i /I set o 20,j set o 40在 所 有 操 作 符 中 , 逗 号 操 作 符 的 优 先 级 是 最 低 的 。 例 如,下面的语句:cat = 17,240;cat = 17,240;被解释为( cat = 17cat = 17) ,240;,240;01-01-775
5、5 2 2 关系表达式for(x =20;x5;x-) /contiue while x is greatr than 5for(x =20;x5;x-) /contiue while x is greatr than 5fr (x1;y!=x;+x) /ctie ile y is not equal to xfr (x1;y!=x;+x) /ctie ile y is not equal to xfor(cinx;s =0; cinx) /contiue while x is 0for(cinx;s =0; cinx) /contiue while x is 0关系表达式的优先级比算术操作符
6、低x+3y-2 /expresion 1x+3y-2 /expresion 1对应于:(x+3)(y-2) /expresion 2(x+3)(y-2) /expresion 2而不是:x+(3y)-2 /expresion 3x+(3y)-2 /expresion 301-01-8855 22 2 C2 C风格字符串的比较 要知道字符数组中的字符串是不是 matemate。如果 wordword是数组名, 下 面 的 测 试可能并不能像我们裕祥的那样的工作: word= word= ”matemate”数 组 名 是 数 组 的 地 址 。 同 样 , 用 引 号 扩 起 的 字 符 串 常
7、 量 也 是 地 址 。 , 上 面的 关 系 表 达 式 不 是 判 断 两 个 字 符 串 是 否 相 同 , 而 是 查 看 它 们 是 否 存 储 在 相同的地址上。#include #include il ctring / prottype for strcmp()il ctring / prottype for strcmp()int main()int main()using amespace std;using amespace std;char word5 = “?t“;char word5 = “?t“;for (char ch = a; strcmp(word, “mat
8、e“); ch+)for (char ch = a; strcmp(word, “mate“); ch+)cout 0strcmp(str1,str2)0因此,根据要如何设置测试条件, strcmp()strcmp()可以扮演 = = =. !,操作符的角色。 01-01-20205.2.3 5.2.3 比较 string string 类字符串#include il tring / string clasint main() using amespace std;tri word = “?t“; for (char ch = a; word != “mate“; ch+) cout ost
9、int ArSiz = 20;int mai() using amespace std; char ArSiz; out name; out il cti / describes clok() function, clok_t ypeint main() using amespace std; cot ; lok_t delay = secs *CLOCKS_PER_SEC; cout it main() using amespace std;it ; cout n; / excute body while ( != 7); / thn tst cout “Yes, is my favorit
10、e.n“ ; retrn 0; 01-01-2929staemnt1For (it_expr; test_expr; update_xpr staemnt2t t3staemnt1test_expr truefalsestaemnt3staemnt2do whiledo while循环的结构01-01-303055 5 5 循环和文本输入如果程序要使用循环来读取来自键盘的文本输入,则必 须有办法知道何时停止读取。 如何知道这一点呢?一种方法是选择某个特殊字符有时被称为哨兵字符 (sentiel charcter)(sentiel charcter),将其作为停止标记。例如,程序 5.165.16在遇到字符时停止读取输入。该程序计算读取的字符数,并回显这些字符,即在屏幕 上显示读取的字符。 按下键盘上的键不能自动将字符显示到屏幕上,程序必 须通过回显输入字符来完成这项工作。通常,这种任务由操作系统处理。