?和:在C語言中的詳解
阿新 • • 發佈:2019-04-26
pre else語句 什麽 fine 是什麽 一個 操作 簡單 整體 三元操作符 ?和:直接可以看成是
?就是if語句
:簡單的翻譯成else語句,但是需要前後放上執行程序。
?就是if語句
:簡單的翻譯成else語句,但是需要前後放上執行程序。
(1)舉例說明:A > B ? A > C ? A : C : B > C ? B : C;這條語句代表什麽意思呢?我們把if和esle帶入進入看
if(A>B) { if(A>C) {執行程序A} else {執行程序C} } else { 執行程序 if (B>C) {執行程序B} else {執行程序C} }
(2)不過這樣看上去還是太復雜,我們把程序分類,加上括號後調理看上去就簡單多了
(A > B ?)( A > C ? A : C ): (B > C ? B : C)
(3)下面我們分析一個比較復雜的宏定義
#define SHIF16(a) ((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3:\
(a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7:\
(a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11:\
(a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15)
我們看後半段 ((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3: (a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7: (a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11: (a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15) 因為&的運算符的優先級要比:和?都要高,所以我們把(a)&0x0001看成一個整體A0,代表最低位第0位是真還是假,以此類推; 就變成:(A0?0:A1?1:A2?2:A3?3:A4?4:A5?5:A6?6:A7?7:A8?8:A9?9:A10?10:A11?11:A12?12:A13?13:A14?14:15) 這個太難看懂了 我們就取三個分析下 (A0?0:A1?1:A2?2:3)如果是這條語句,那麽是什麽意思呢? 我們用括號法來分析下: (A0?) 0 : {(A1?)1: [(A2?)2:3 ] } if(A0)//A0是真 { //那就是0 } else { if(A1) { //那就是1 } else { if(A2) { //那就是2 } else { //那就是3 } } } 註釋: (a)&0x0001 ->是最低位 (a)&0x0002 ->是最第1位 (a)&0x0004 ->是最第2位 (a)&0x0008 ->是最第3位 (a)&0x0010 ->是最第4位 (a)&0x0020 ->是最第5位 . . . (a)&0x4000->是最第14位
!!!!!!!!!!!!具體這個宏定義是啥作用評論區來說說吧!!!!!!!
?和:在C語言中的詳解