【发布时间】:2018-03-14 09:15:13
【问题描述】:
在误解了朋友的陈述后,我刚刚得到了一个问题的想法。
我的朋友告诉我:我刚刚教了一位同事如何在 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 “三元”。或者有没有办法在没有一段可怕的代码的情况下做这样的事情?
【问题讨论】:
-
这与您的问题无关,但从技术上讲,您可以在一行上使用 if else if else 语句而不使用三元任何东西。当然这很荒谬,但三元组不存在只是因为它在一条线上。它的语法和可读性方便。所以不要过分强调“一行”编译器不在乎你是否将所有内容放在一行或用空格以某种方式格式化它。即使您已经知道这一点,我也只是想添加它。相信我很多不。祝你好运
-
C 忽略所有不需要分隔预处理标记的空白字符。什么是“单行”做事的伟大“美德”?您也可以在一行中执行
if语句。 -
函数
printf返回一个值,但是当调用一个没有返回值的函数时,您的代码将毫无意义。 -
“一行”没有任何好处。相反,您应该专注于编写可读且快速的代码。
-
添加/修改@Lundin 上面所说的,它有负面的好处。任何使用调试器单步执行代码以试图找到一些难以捉摸的错误的开发人员都会看到这些“聪明”的单行代码,并希望嗯……对作者来说是“非常糟糕的事情”。
标签: c if-statement