分享
 
 
 

关于C++的一些细节[四:循环,分支语句,关系表达式,关系运算符]

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

5.循环和关系表达式

5.1 C++语法将整个for循环看作一条语句.

5.2 循环只执行一次初始化.

5.3 执行测试条件: 可以是任意表达式.

C++将把运算结果转换为bool类型: 非零转换为true, 0转换为false. 这种变化不会导致不兼容问题--因为C++会在需要整数值的地方将true/flase 分别转换为1/0; 在需要 bool值的地方 将0 转换为false,非零转换为true.

5.4 for循环是入口条件循环--进入每轮循环前都会计算测试表达式的值.

5.5 编码习惯: for 和 '(' 之间加一空格;而函数名与括号之间不加空格. 从视觉上强化控制语句和函数调用 之间的区别.

5.6 表达式: C++表达式是值或与操作符的组合,每个C++表达式都有值.

eg: a = 3 表达式的值为 3; 因而 允许 这样: a = b =c =0; //从右向左: c = 0的值为0,所以变成: a = b = 0;......

x<y 表达式的值为: true or false. cout<<x<y; 将显示 1 or 0.

可以使用 cout.setf(ios_base::boolalpha);//旧版用:ios::boolalpha 设置一标记, cout 将显示 true or false.

表达式加上分号 ';' 都成语句, eg: a+b; 为合法语句,只是没用得到的结果.

语句去掉分号不一定为表达式, eg: int a; 为语句, 去掉分号则不是表达式.

5.7 可以在for循环初始化部分声明变量. 为局部变量,离开循环后变量将消失.

5.8 建议: 在声明数组和引用数组长度时(如:for循环)使用const值, 以避免值被修改.

5.9 省略for循环中测试表达式,将认为是 true. 如: for(;;){} 测试表达是为true 程序不会终止.

5.10 语句块 { } . 代码中可以用一对花括号 {} 将一段代码括起. 在里面声明的变量的作用范围只是其所在语句块.

5.11 逗好操作符 可以将多个表达式用 ',' 分割放在一个for循环表达式中

i = 20, j = 2 * i //逗好操作符 确保先计算第一个表达式,以后逐个计算; 而整体表达式的值为最后一个表达式的值. 还有 (17,40) 表达式的值为 40.

5.12 花絮:

** for (cin>>x; x == 0; cin>>x){} //接受输入,直到输入的是 数值: 0.

*** 上式中 '==' 若误写为 '=' 关系运算 将变为 赋值运算. 如运算符 右边的值非零,则测试表达式的值为true,循环将不会终止.

5.13 while 循环

*** delay 一例:

#include<ctime> describes clock() function, clock_t type

clock_t delay = secs * CLOCKS_PER_SEC; //defined in ctime

clock_t start = clock(); //get system clock.

while (clock() - start < delay); // waiting for secs seconds.

***类型别名: clock_t 作为clock()返回类型的别名,编译器将把它转换为long,ynsigned int 或适合系统的其它类型.

建立方式:

i: 使用预处理器. #define clock_t unsigned int

ii: 用关键字typedef 创建别名: 将别名声明成为所需的类型,然后在前面加 typedef.

区别: typedef不会创建新类型,只为已有的类型建一新名称. 预处理则 使用替换的方法,有如下的缺点:

eg: #define F_P float *

F_P pa,pb;

编译器将其替换为: float * pa,pb; //pb不是如你所愿地声明为 float* ,而只是 float类型.

5.14 do while 循环, 为出口条件循环.

5.15 文本输入.

*** cin . 发送给cin 的输入被缓冲,只有按回车键后,它的输入的内容才被发送给程序. 而且cin 将忽略空白符.

*** cin.get(ch) 输入仍被缓冲,不过接收每个字符.输入的字符将被赋值给ch. ch必须为char类型,不能为int

cin.get(ch) 参数为引用: char & ,所以可以修改 ch, 否则参数需传入 &ch.

#*# cin.get(ch) 用于字符输入时返回 istream类对象,并转换为bool类型 true; 到达文件尾时,函数返回istream类对象,并转换为bool类型 false.

#*# int ch = cin.get() 用于字符输入时返回 int类型的字符编码; 达到文件尾时函数返回 EOF, 多数系统中被定义为 '-1'.

eg: while ((ch = cin.get()) != EOF){} whie (cin.get(ch)){}

cin.put(ch); //ch若为 int类型 需要转换为char 类型.

6. 分支语句和逻辑操作符

6.1 花絮

* if (3 == num)... // 如果错写为 3=num, 编译器会报错, 有些聪明的编译器会识别 if (num=3) 的错误.

* (17 < age <3 9) 等价于 ((17 < age) < 39)

* bool a,b; a && b, 若 a 为false, 则表达式 a && b 将不判断 b的值.

* and, or, not 在c++中为保留字; 但在C 语言中非保留字, 要使用 需加头文件: <iso646.h>

6.2 cctype 字符函数库 对所有字符编码通用.

有函数: isalpha9char) 非char返回0. ispunct(char) 输入为标点符号 返回true.

isspace(), isdigits() ......

6.3 switch 语句 标签都是整数常量表达式.

6.4 数字输入.

eg: int apple[10]; char ch;

while (ch !='Q' && cin>>apple[i]) //cin>>apple[i] 若输入非数字,则返回istream类对象,并转换为bool型 false.

while (!(cin>>apple[i]))

{

cin.clear(); // 如果输入非数字,cin返回 false, 并设置失效位,输入被阻断. 进入循环, 用cin.clear() 恢复输入

while (cin.get() != '\n') continue; //因为输入的非数字还留在输入队列,所以把它们清除,它们以 '\n'结束

}

欢迎大家提出批评和建议。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有