程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言條件運算符和條件表達式學習資料

C語言條件運算符和條件表達式學習資料

編輯:關於C語言
 

如果在條件語句中,只執行單個的賦值語句時, 常可使用條件表達式來實現。不但使程序簡潔,也提高了運行效率。

條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:
    表達式1 ?  表達式2 : 表達式3
其求值規則為:如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。條件表達式通常用於賦值語句之中。

例如條件語句:

復制純文本新窗口
 
  1. if(a>b) max=a;
  2. else max=b;
if(a>b)  max=a;
else max=b;

可用條件表達式寫為

復制純文本新窗口
 
  1. max=(a>b) ? a : b;
max=(a>b) ? a : b;

執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。

使用條件表達式時,還應注意以下幾點:

  • 條件運算符的運算優先級低於關系運算符和算術運算符,但高於賦值符。因此
    復制純文本新窗口
     
    1. max=(a>b) ? a : b;
    max=(a>b) ? a : b;
    可以去掉括號而寫為
    復制純文本新窗口
     
    1. max=a>b ? a : b;
    max=a>b ? a : b;
  • 條件運算符?和:是一對運算符,不能分開單獨使用。
  • 條件運算符的結合方向是自右至左。例如:
    復制純文本新窗口
     
    1. a>b ? a : c>d ? c : d;
    a>b ? a : c>d ? c : d;
    應理解為:
    復制純文本新窗口
     
    1. a>b ? a : ( c>d ? c : d );
    a>b ? a : ( c>d ? c : d );


這也就是條件表達式嵌套的情形,即其中的表達式3又是一個條件表達式。

【例5-8】

復制純文本新窗口
 
  1. #include <stdio.h>
  2. int main(void){
  3. int a,b,max;
  4. printf("\n input two numbers: ");
  5. scanf("%d%d",&a,&b);
  6. printf("max=%d",a>b?a:b);
  7. return 0;
  8. }
#include <stdio.h>
int main(void){
    int a,b,max;
    printf("\n input two numbers:   ");
    scanf("%d%d",&a,&b);
    printf("max=%d",a>b?a:b);
    return 0;
}

用條件表達式對上例重新編程,輸出兩個數中的大數

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved