c - 使用三元条件运算符和其他两个 int 的值分配 int

标签 c if-statement ternary-operator conditional-operator

在我用来学习 C 的《Big Nerd Ranch C》一书中,据说“每当你遇到根据条件将值分配给变量的场景时,你就有了一个候选者”条件/三元运算符',即?。”

所以我的问题是,有人可以向我解释以下代码片段:

int i = 20;
int j = 25;
int k = (i > j) ? 10 : 5;

if (5 < j - k) {
    //First expression
    printf("the first expression is true.");
} else if ( j > i ) {
    //Second Expression 
    printf("The second expression is true.");
} else {
    printf("Neither expression is true.");
}

最佳答案

int k = (i > j) ? 10 : 5;在您的示例中相当于:

if (i > j)
{
    int k = 10;
}
else
{
    int k = 5;
}

三元运算符只是根据条件赋值时 if 条件特殊情况的快捷方式。

如果删除不完整的else if,代码片段的其余部分并不难理解。片段:

if (5 < j(25) - k(5)) == if (5 < 20)
{
    printf("the expression is true.");
}
else
{
     printf("the expression is false.");
}

因为5小于 25 - 5 = 20 ,该程序将打印“第一个表达式为真”。

关于c - 使用三元条件运算符和其他两个 int 的值分配 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24851777/

相关文章:

mysql - 批处理文件执行的.sql文本文件中mysql的if语句

c - float 在 if else 语句中不起作用 (c)

C宏包含 "incomplete"三元运算符

iOS:我需要一种更好的方法来编写这段更改标签字体大小(粗体和常规)的代码

c - 再次修改常量..使用 void 指针

c - 通过 sockaddr_in 获取 WAN ip

c - OSX + homebrew + CMake + libpng 版本不匹配问题

具有函数调用的 C++ 三元运算符

ruby - 有人可以向我解释以下代码吗?

c++ - 如何在 C++ 中为卡片制作 ASCII 边框并制作 10 不移动它们