C語言------三目運算符(條件運算符)


今天在看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. 條件運算符的結合方向是自右至左。


免責聲明!

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



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