2017-02-12 61 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