if語句的嵌套以及條件運算符和條件表達式(初學者)


1、當if語句中的執行語句又是if語句時,則構成了if語句的嵌套情形。

其一般形式可表示為:

if()

{

  if()……;

}

或:

if()

  if()語句1;

  else 語句2;

else

  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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM