【學習筆記】【C語言】三目運算子,學習筆記運算子
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 //printf("a=%d\n", a); 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 }