三目運算子的小問題。
為了求得乙個字型點陣所佔的大小,定義了如下巨集定義。
#define font_size 12
#define size (font_size*
(font_size/
8+ font_size %8?
1:0)
)
當font_size是8的整數倍時,font_size % 8?1:0為0,當font_size不是8的整數倍時,font_size % 8?1:0為1,我想表達這個意思。然而結果卻是當font_size是12時,size是1,很奇怪,為啥呢。
後來看到說三目運算子是右結合,啥叫右結合,就是從右往左計算唄,然後再看我的表示式,實際是怎麼解讀的呢,
首先計算font_size*(font_size/8+ font_size%8
然後計算條件表示式,font_size*(font_size/8+ font_size%8
是多少呢,是2,然後後面的結果就是1了,所以不對啊,
知道為啥錯了,就可以改了,後面的加個括號,
#define font_size 12
#define size (font_size*
(font_size/8+
(font_size %8?
1:0)
))
條件運算子和條件表示式
有一種if語句,當被判別的表示式的值為 真 或 假 時,都執行乙個賦值語句且向同乙個變數賦值。如 if a b max a else max b 當a b時將a的值賦值給max,當a b時將b的值賦給max,可以看到無論a b是否滿足,都是給同乙個變數賦值。c提供的條件運算子和條件表示式來處理這類問...
三 運算子 表示式
三 運算子 表示式 1.i i的區別 i 是先對 i操作,再對i執行 1 i是先執行 1,將值賦給 i後,再對 i操作 2.邏輯運算子使用需要注意什麼 與或 非 3 7 4 ture 錯誤,因為3 7 判斷為true,true 隱式轉換為 1,因此程式判斷為正確,邏輯判斷錯誤。3 7 7 4 fal...
C 條件運算子(三目運算子)
在某些情況下,可以用條件運算子 來簡化if語句。是乙個三元運算子,其構成的表示式格式為 表示式1 表示式2 表示式3 條件運算子的執行流程示意圖如上圖所示,描述如下 1 計算表示式1的值 2 若表示式的值為真 或非0 則只計算表示式2,並將其結果作為整個表示式的值 反之,即表示式1的值為假 或為0 ...