C 知识量:16 - 74 - 317
while循环的通用形式如下:
while (expression) statement
其中,statement部分可以是简单语句(以分号结尾),也可以是复合语句(以花括号括起来)。expression用于循环条件的判断,通常使用关系表达式,如果expression为真(或者说为非零),执行statement一次,然后再次判断expression。如果expression为假(0),结束循环,执行while循环体后面的语句。每次循环都被称为一次迭代。
使用while循环一个很重要的事情就是确定while循环结束的条件必须能够实现。要做到这一点,通常需要让测试表达式的值有变化,表达式最终要为假,否则,循环就不会终止。
只有在对测试条件求值时,才决定是终止还是继续循环。
while循环是使用入口条件的有条件循环,所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件,该表达式是一个入口条件,必须满足条件才能进入循环体。下面示例的两个while循环,一个会进入循环体执行循环,一个从始至终不会执行循环。
#include <stdio.h> int main(void) { int i = 5; while (i < 10) { /*会执行循环*/ printf("while No.1 is going,now,i=%d\n", i); i++; } i = 5; /*重置i为5*/ while (i > 6) { /*不会执行循环*/ printf("while No.2 is going,now,i=%d\n", i); i++; } system("pause"); return 0; }
while循环经常依赖测试表达式作比较,这样的表达式被称为关系表达式,出现在关系表达式中间的运算符叫做关系运算符。
C语言的关系运算符:
运算符 | 含义 |
---|---|
< | 小于 |
<= | 小于或等于 |
== | 等于 |
>= | 大于或等于 |
> | 大于 |
!= | 不等于 |
关系运算符常用于构造while语句和其他语句中用到的关系表达式,这些语句都会检查关系表达式为真还是为假。需要注意的是:不能用关系运算符比较字符串;可以用关系运算符比较浮点数,但是,尽量只使用<和>,不要使用=或含有=的关系表达式,因为浮点数的舍入误差会导致在逻辑上应该相等的两数却不相等。可以使用fabs()函数(声明在math.h头文件中)比较浮点数,该函数返回一个浮点值的绝对值。
通常,表达式为真的值是1,表达式为假的值是0。其实,对C语言来说,所有的非零值都被视为真,只有0被视为假。
C99标准针对关系表达式求值结果的真假值新增了_Bool类型。在编程中,表示真或假的变量被称为布尔变量,所以_Bool是C语言中布尔变量的类型名。_Bool类型的变量只能存储1(真)或0(假),如果把其他非零数赋值给_Bool类型的变量,该变量会被设置为1。这也体现了C语言把所有非零值都视为真。
C99标准提供了stdbool.h头文件,该头文件让bool成为_Bool的别名,而且将true和false分别定义为1和0的符号常量。包含该头文件后,写出的代码可以与C++兼容,在C++中,bool、true和false被定义为关键字。如果系统不支持_Bool类型,可以把_Bool替换成int。
关系运算符的优先级比算术运算符低,比赋值运算符高。关系运算符之间有两种不同的优先级:
高优先级组:<、<=、>、>=
低优先级组:==、!=
与其他大多数运算符一样,关系运算符的结合律也是从左往右。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6