比较大小:使用关系运算和表达式
       进行比较的表达式叫关系表达式,其中出现的运算称为关系运算符
C中的关系运算符

运算符
含义
小于
<=
小于等于
==
等于
>=
大于等于
大于
!=
不等于
关系运算符也可以用于浮点数。但是只能使用<和>,原因在舍入误差可能造成两个逻辑上应该相等的数不相等。使用在math.h头文件中声明的fabs()函数可以方便地进行浮点数判断,这个函数返回浮点数的绝对值。
       //6-5.c   ---浮点数比较
#include <stdio.h>
#include <math.h>
int main (void)
{
       const double ANSWER = 3.14149;
       double response;
       printf ("What is the value of pi?\n");
       scanf ("%lf",&response);
       while (fabs (response - ANSWER) > 0.0001)
              {
              printf ("Try again !\n");
              scanf ("%lf",&response);
              }
       printf ("Close enough!\n");
       return 0 ;
}
 
每个表达式都被判定为真或者假(永久没有可能)
       什么是真
C的表达式通常都有一个值 所以关系运算也是如此。在C中一个真表达式的值为1而一个假的表达式的值为0
       //6-6.c----c中的真和假的值
#include <stdio.h>
int main (void)
{
       int true_val,false_val;
       true_val = (10 > 2);
       false_val = (10 < 2);
       printf ("ture = %d,false = %d\n",true_val,false_val);
       return 0 ;
}
运行结果ture = 1,false = 0
还有什么是真:
6-7.c -- 哪些值为真
#include <stdio.h>
int main (void)
 
{
       int n = 3;
       while (n)
              printf ("%2d is true \n",n--);
       printf ("%2d is false \n",n);
        n = -3;
       while (n)
              printf ("%2d is true \n",n++);
       printf ("%2d is false \n",n);
       return 0 ;
}
             
运行结果
3 is true
 2 is true
 1 is true
 0 is false
-3 is true
-2 is true
-1 is true
 0 is false
所看从这程序看出:判断条件是建立在数值的基础上而不是建立在真假基础上。要谨记如果关系表达式为真它是值就为1,如果为假,它的值就为0.也可以说所有非零的值都被认为是真,只有0被认为是假
//6-8.c -- 误用=(赋值符)
//将导致无限的循环
#include <stdio.h>
int main (void)
{
       long num;
       long sum = 0L;
       int status;
       printf ("Please enter an integer to be summed.");
       printf ("(q to quit): ");
       status = scanf ("%ld",&num);
       while (status = 1)
       {
              sum = sum + num;
              printf ("Please enter an integer (q to quit ):");
              status = scanf ("%ld",&num);
       }
       printf ("Those integers sum to %ld .\n",sum);
       return 0 ;
}
 
新的_Bool类型(c99专门定义的)
       _Bool变量只可以具有值1(真)或0(假)如果把一个_Bool变量赋为一个非零的数值,变量被设置为1这说明C把任何非零的值都认为是真。
//6-9.c -- 使用_Bool变量
 
#include <stdio.h>
int main (void)
{
       long num;
       long sum = 0L;
       _Bool input_is_good;
       printf ("Please enter an integer to be summed.");
       printf ("(q to quit): ");
       input_is_good = (scanf ("%ld",&num) == 1);
       while (input_is_good)
       {
              sum = sum + num;
              printf ("Please enter an integer (q to quit ):");
              input_is_good = (scanf ("%ld",&num) == 1);
       }
       printf ("Those integers sum to %ld .\n",sum);
       return 0 ;
}
 
关系运算符的优先级
       关系运算符的优先级要比算术运算符要低,但是经比赋值符要高,它的结合方向也是从左到右的方式。同时关系运算符本身出分为高优先级组和低优先级组
  

高优先级组
<(大于) <=(大于或等于) >(小于) >=(小于或等于)
低优先级组
==(等于)     !=(不等于)
运算符的优先级(已学过的)

运算符(优先级从高到低)
结合性
()
从左到右
- + ++ -- sizeof (type) (所有一元运算符)
从左到右
* /    %
从左到右
+    -
从左到右
< > <= >=
从左到右
==    !=
从左到右
=
从右到左
总结 while语句
       While 语句创建一个在判断表达式为假之前重复执行的循环,while语句是一个入口条件循环,也就是说,是否执行循环的决定是在进入循环之前就做出的。循环体的语句可以是一个简单的语句也可是一个复合语句(复合语句要求一定要用花括号括起来)。
总结关系运算符和表达式:
       每个关系运算符都把它的左边的值与它右边的值进行比较。如果关系为真,关系表达式的值为1,如果关系为假,关系表达式的值为0.
不确定的循环与计数循环
    不确定循环:也就是说在表达式变为假之前你不能预先知道循环要执行多少次
    计数循环:它们循环执行预先确定的次数
//6-10.c -- 一个计数循环
#include <stdio.h>
int main (void)
{
       int a = 1;
       const int NUMBER = 22;
       while (a++ <= NUMBER)//最好用这种方法而不是用(while (a <= NUMBER)在到后面在加一个a++语句)
       {
              printf ("Be my valentine!\n");
             
       }
       printf ("一共循环了:%d 次\n",a-1);
       return 0 ;
}
 
在建立一个重复执行固定次数循环是涉及到的三个动作
1.       必须初始化一个计数器
2.       计算器与某个有限的值进行比较
3.       每次执行循环,计数器的值都要递增或递减