c - C 中的条件运算符如何使用 0?

标签 c conditional-operator

C 中的条件运算符的用法如下: condition ? value_if_true : value_if_false
0 在 value_if_false 中使用时意味着什么? ?

例如,我见过一些人这样使用它。
a == b ? i++ : 0

好像什么也没做。这是否像 return 0 一样工作?在其他功能中?

最佳答案

在 C 语言中,三元是 if 语句的较短版本,它需要 if_trueif_false 这两个语句。它会是这样的(事实上,一种情况可以有多个语句,用逗号分隔):

简短:

condition ? if_true : if_false;

长:

if (condition) {
    if_true;
} else {
    if_false;
}

如果您在条件前面放置一些内容,您也可以分配该值。 简短:

result = condition ? if_true : if_false;

长:

if (condition) {
    result = if_true;
} else {
    result = if_false;
}

现在这就是窍门。在 C 语言中,编写 0; 是一个有效的语句,因此您的三元数会变成更长的版本,与下面的代码相同:

if (a == b) {
    i++;
} else {
    0; /* This is valid C statement */
}

或者如果你也有作业,那就是:

if (a == b) {
    result = i++;
} else {
    result = 0;
}

您还可以这样做:

int a;
/* Code here ... */
condition ? a = 5: 0;

这实际上等同于:

if (condition) {
    a = 5;
} else {
    /* DO not touch a */
}

关于c - C 中的条件运算符如何使用 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62004752/

相关文章:

c - lstat : Bad Address

C - 如何逐行读取 HTTP GET 请求的返回值?

c - 过程式语言和函数式语言之间的区别?

c - 请教推荐Lua与C/C++协同工作的方式?

c - 如何在不先左移的情况下对两个数字进行“或”运算?

ruby - 为什么在使用 "if"搜索子字符串时,使用速记 "include?"语法不求值

ruby - 为什么带赋值的三元运算符不返回预期的输出?

条件运算符 "? : "

c++ - 条件运算符会导致代码效率降低吗?

awk - 如果 awk 中未设置变量,则设置变量