C语言设计

第17章


然后跳
到整个 if 语句之外继续执行程序。 如果所有的表达式均为假,则执行语句 n。然后继续执
行后续程序。 if-else-if 语句的执行过程如图 3―3 所示。
【例 5.5】
#include"stdio.h"
main(){
    char c;
谭浩强      C 语言程序设计               2001 年 5 月 1 日
    printf("input a character:    ");
    c=getchar();
    if(c="0"&&c="A"&&c="a"&&cb)
{a++;
           b++;}
else
{a=0;
      b=10;}
5.3.2 if 语句的嵌套
当 if 语句中的执行语句又是 if 语句时,则构成了 if 语句嵌套的情形。
其一般形式可表示如下:
    if(表达式)
        if 语句;
或者为
        if(表达式)
           if 语句;
        else
           if 语句;
在嵌套内的 if 语句可能又是 if-else 型的,这将会出现多个 if 和多个 else 重叠的情
况,这时要特别注意 if 和 else 的配对问题。
例如:
    if(表达式 1)
        if(表达式 2)
            语句 1;
        else
语句 2;
谭浩强      C 语言程序设计               2001 年 5 月 1 日
其中的 else 究竟是与哪一个 if 配对呢?
应该理解为:
 if(表达式 1)
        if(表达式 2)
           语句 1;
      else
       语句 2;
还是应理解为:
if(表达式 1)
        if(表达式 2)
            语句 1;
    else
    语句 2;
为了避免这种二义性,C语言规定,else 总是与它前面最近的 if 配对,因此对上述例
子应按前一种情况理解。
【例 5.6】
main(){
    int a,b;
    printf("please input A,B:    ");
    scanf("%d%d",&a,&b);
    if(a!=b)
    if(a>b)  printf("A>B ");
    else     printf("AB、Ab)  printf("A>B ");
    else  printf("Ab)  max=a;
        else max=b;
可用条件表达式写为
    max=(a>b)?a:b;
执行该语句的语义是:如 a>b 为真,则把 a 赋予 max,否则把 b 赋予 max。
使用条件表达式时,还应注意以下几点:
1) 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此
    max=(a>b)?a:b
可以去掉括号而写为
    max=a>b?a:b
2) 条件运算符?和:是一对运算符,不能分开单独使用。
3) 条件运算符的结合方向是自右至左。
例如:
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式 3 又是一个条件表达式。
【例 5.8】
main(){
    int a,b,max;
    printf("  input two numbers:   ");
    scanf("%d%d",&a,&b);
    printf("max=%d",a>b?a:b);
}
用条件表达式对上例重新编程,输出两个数中的大数。
小说推荐
返回首页返回目录