if语句的嵌套以及条件运算符和条件表达式(初学者)

1、当if语句中的执行语句又是if语句时,则构成了if语句的嵌套情形。

其一般形式可表示为:

if()

{

  if()……;

}

或:

if()

  if()语句1;

  else 语句2;

else

扫描二维码关注公众号,回复: 4794817 查看本文章

  if()语句3;

  else 语句4;

注:if语句的嵌套不要太多,最好不超过5个。(避免逻辑错误)

在嵌套内的if语句可能又是if-else型,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。

例:if(表达式1)

  if(表达式2)

    语句1;

  else

    语句2;

思考:else究竟与哪一个if配对呢?

就近原则:为避免二义性,C语言规定,else总是与它前面最近的if配对。所以应理解为;

if(表达式1)

  if(表达式2)

    语句1;

  else

    语句2;

比较下列两例,哪一个是运用嵌套方法?

例1:

#include<stdio.h>

void main()
{
    int a,b;
    printf("please input A,B ");
    scanf("%d%d",&a,&b);
    if(a!=b)
    if(a>b)  printf("A>B\n");
    else     printf("A<B\n");
    else     printf("A=B\n");

}

例2:

#include<stdio.h>

void main()
{
    int a,b;
    printf("please input A,B ");
    scanf("%d%d",&a,&b);
    if(a==b) printf("A=B\n");
    else if(a>b)  printf("A>B\n");
    else     printf("A<B\n"); 

}

注:采用嵌套结构实质上是为了进行多分支选择,实际上有三种选择,即:A>B、A<B或A=B。这种问题用if-else-if语句也可以完成,而且程序更加清晰。因此,在一般情况下较少使用if语句的嵌套结构,以使程序更便于阅读理解。

2、条件运算符和条件表达式

条件运算符为“?和:”是一个三目运算符。

由条件运算符组成的条件表达式的一般形式为:

表达式1?表达式2:表达式3

其求值规则为:若表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值

条件表达式通常用于赋值语句之中:

例:if(a>b) 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)

例:

#include<stdio.h>

void main()
{
    int a,b,max;
    printf("\n please input two nubers ");
    scanf("%d%d",&a,&b);
    printf("max=%d",a>b?a:b);
}

补例:输入一个字符,判断它是否为大写字母,如果是,把它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。

#include<stdio.h>

void main()
{
    char ch;
    scanf("%c",&ch);
    ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
    printf("%c",ch);
}

猜你喜欢

转载自www.cnblogs.com/lvfengkun/p/10226712.html