c - if + else if + else在一行?

时间:2017-10-03 08:18:10

标签: c if-statement

在误解了朋友的陈述后,我才提出了一个问题。

我的朋友告诉我:我刚刚教过一位同事如何在c中的一行中做if / else。

示例:

int i = 0;
i < 0 ? printf("i is below 0") : printf("i is over or equal to 0");

现在,没有什么新东西,它被称为三元组,大多数人都知道这种说法,但我首先明白:

我刚刚教过一位同事如何在一行中完成IF / ELSE IF / ELSE。 既然我不知道做这样的事情是可能的,我试着做一些像

这样的事情
int i = 0;
 i < 0 ? printf("i is below 0") : i == 0 ? printf("i equal 0") : printf("i is over 0");

实际上是否可以执行if / else if / else“三元”。或者有没有办法在没有可怕代码的情况下做这样的事情?

3 个答案:

答案 0 :(得分:6)

如果您看到例如this conditional expression reference你可以看到&#34;三元表达式的格式&#34;是

  

condition ? expression-true : expression-false

条件表达式的所有三个部分反过来都是表达式。这意味着您可以拥有几乎任何类型的表达式,包括嵌套的条件(三元)表达式。

答案 1 :(得分:3)

这绝对有效。

或者你可以尝试这样的事情 -

printf(i < 0 ? "i is below 0" : i == 0 ? "i equal 0" : "i is over 0");

答案 2 :(得分:0)

C同时包含语句和表达式。有两种不同的句法事物。 BT中的线路在C中并不重要(预处理器除外)。

表达式(如f(1,x+y)或甚至x=y++)是一种特殊的陈述(最常见的陈述)。

作为C的扩展,GCC编译器添加statement expressions,超出C11标准(读n1570)定义的范围。请下载然后阅读n1570 repoort。

if用于条件语句,但ternary ?: operator用于表达式(所有三个操作数都是子表达式)。

某些编程语言(特别是Lisp,Haskell,Scheme,Ocaml)只有表达式而且没有任何语句。