今天在看C語言的時候看到了下面的代碼(廢話少說,直接上代碼):
#include <stdio.h>
int main() {int max(); extern int A,B,C; //把外部變量A,B,C的作用域擴展到從此處開始 printf("Please enter three integer numbers:"); scanf("%d,%d,%d",&A,&B,&C); //輸入3個整數給A,B,C printf("max is %d\n",max()); return 0; } int A,B,C; int max() {int m; m=A>B?A:B; //把A和B中的大者放在m中 if(C>m) m=C; //把A,B,C三者中的大者放在m中 return(m); //返回m的值 }
運行結果如下:
Please enter three integer numbers:34 67 12 max is 67
這個例子很簡單,其中運用了三目運算符:
m=A>B?A:B;
如果在條件語句中,只執行單個的賦值語句時, 常可使用條件表達式來實現。不但使程序簡潔,也提高了運行效率。
條件運算符為?和:,它是一個三目運算符,即有三個參與運算的量。由條件運算符組成條件表達式的一般形式為:
表達式1? 表達式2:表達式3
其求值規則為:如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式2的值作為整個條件表達式的值。 條件表達式通常用於賦值語句之中。
例如條件語句:
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. 條件運算符的結合方向是自右至左。