在误解了朋友的陈述后,我才提出了一个问题。
我的朋友告诉我:我刚刚教过一位同事如何在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“三元”。或者有没有办法在没有可怕代码的情况下做这样的事情?
答案 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)只有表达式而且没有任何语句。