1.N目運算符
像邏輯非(!)、負號(-)這種只連接一個數據的符號,稱為“單目運算符”,比如!5、-5。
像算術運算符、關系運算符、邏輯運算符這種連接二個數據的負號,稱為“雙目運算符”,比如6+7、8*5、5>6、4 && 0、
以此類推,連接3個數據的運算符,應該稱為“三目運算符”
2.三目運算符
C語言提供了唯一一個三目運算符:條件運算符。
1> 使用格式
表達式A ? 表達式B : 表達式C
2> 運算結果
如果表達式A成立,也就是為“真”,條件運算符的結果就是表達式B的值,否則,就為表達式C的值
3> 結合方向和優先級
優先級順序為:算術運算符 > 關系運算符 > 條件運算符 > 賦值運算符
條件運算符的結合方向是“從右至左”
int a = 3>4 ? 4+5 : 5>4 ? 5+6 : 6>7+1;
上面的代碼等價于
int a = (3>4) ? (4+5) : ( (5>4) ? (5+6) : (6>(7+1)) );
簡化一下就是
int a = 0 ? 9 : ( 1 ? 11 : 0 );
繼續簡化為
int a = 0 ? 9 : 11;
所以a的值是11
1 // 三目運算符 條件 ? 數值1 : 數值2 2 3 //int a = !100 ? 9 : 89; 4 5 // 6 7 8 #include <stdio.h> 9 10 int main()11 {12 /* 計算2個整數之間的最大值13 int a = 10;14 15 int b = 99;16 17 int c = a>b ? a : b;18 19 printf("c is %d/n", c);20 */21 22 // 計算3個整數之間的最大值23 int a = 10;24 int b = 999999;25 int c = 1000;26 27 // 求出a、b的最大值28 int abMax = (a > b) ? a : b;29 // 求出最終的最大值30 int d = (abMax > c) ? abMax : c;31 32 //int d = (((a > b) ? a : b) > c) ? ((a > b) ? a : b) : c;33 34 printf("d is %d/n", d);35 return 0;36 }
新聞熱點
疑難解答