如果在條件語句中,只執行單個的賦值語句時, 常可使用條件表達式來實現。不但使程序簡潔,也提高了運行效率。
條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:
表達式1 ? 表達式2 : 表達式3
其求值規則為:如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。條件表達式通常用於賦值語句之中。
例如條件語句:
復制純文本新窗口
- if(a>b) max=a;
- else max=b;
if(a>b) max=a; else max=b;
可用條件表達式寫為
復制純文本新窗口
- max=(a>b) ? a : b;
max=(a>b) ? a : b;
執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。
使用條件表達式時,還應注意以下幾點:
復制純文本新窗口
- max=(a>b) ? a : b;
max=(a>b) ? a : b;可以去掉括號而寫為
復制純文本新窗口
- max=a>b ? a : b;
max=a>b ? a : b;
復制純文本新窗口
- a>b ? a : c>d ? c : d;
a>b ? a : c>d ? c : d;應理解為:
復制純文本新窗口
- a>b ? a : ( c>d ? c : d );
a>b ? a : ( c>d ? c : d );
這也就是條件表達式嵌套的情形,即其中的表達式3又是一個條件表達式。
【例5-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;
- }
#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; }
用條件表達式對上例重新編程,輸出兩個數中的大數