2017-02-12 81 views
0

簡單地說,我想做的事的東西線:使用布爾(C)

int a = 6.; 
int b = 10 * (1 + (a==0)); 

這樣b=10如果a!=0,或者b=20如果a==0。這種特殊的格式不起作用,有沒有一種方法,沒有額外的if語句?

+6

拋開可讀性,它是如何工作的?我爲你的用例得到了正確的結果。 – StoryTeller

+2

誰在乎它是否更具可讀性?不要做過早的優化,專注於可讀性並將代碼生成留給編譯器。作爲旁註:爲什麼你給一個整數賦一個'double'常量? – Olaf

+1

什麼*確切*「*不起作用*」? *嘆息* – alk

回答

5

使用三元操作

int b = a ? 10: 20; 
+2

不是一個if語句,但看起來很像一個... –

+0

@ Jean-FrançoisFabre;但它真的不是'if'語句:) – haccks

+0

謝謝,這將爲我所需要的:) – Dant

1
int a = 6; 
int b = 10 * (2 - (a != 0)); 
1

或者withouth的條件語句

int a = 123; 
int b = 10 * (1 + !a); 

否定a會給1如果是0,並且0如果是別的。

+0

非常酷的把戲 – faviouz