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

时间:2014-07-20 15:05:22

标签: 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.");
}

1 个答案:

答案 0 :(得分:2)

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

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

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

如果删除不完整的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,此程序将打印“第一个表达式为真”。