我还在学习C并尝试理解我在后面看到的一些内容:
printf("%s ", row[i] ? row[i] : "NULL");
显然,我知道printf
,%s
等。我不能完全掌握的是我应该寻求理解? :
以及什么我的其他选择是。我不熟悉术语,所以我甚至不确定这是格式字符串的一部分"。我应该对此进行评估,它会返回row[i]
并继续返回row[i]
,直到它到达NULL
为止?
澄清和指向正确的方向,以更好地学习和理解这一点将非常感激。
答案 0 :(得分:3)
它与字符串格式无关。这是一段称为三元操作的语法糖。它看起来像这样:<condition> ? <if_true> : <if_false>
。
扩展,它相当于:
if (row[i])
{
result = row[i];
}
else
{
result = "NULL";
}
printf("%s ", result);
答案 1 :(得分:2)
这称为三元运算符。如果语句为<condition> ? <res1> : <res2>
,那么如果condition
被评估为true,则语句将被评估为res1
,否则将被评估为res2
。
答案 2 :(得分:1)
?
运算符称为conditional operator(或三元运算符)。它可以被认为是一个&#34;在线条件语句&#34;。您共享的代码相当于:
if(row[i] != NULL) {
printf("%s ", row[i]);
} else {
printf("%s ", "NULL");
}
条件运算符可用作函数或赋值的参数。它们遵循以下语法:
[conditional boolean evaluation] ? [value if true] : [value if false]
所以,你可以像下面的例子那样嵌入它:
int y = x < 5 ? 1 : 0; // if x is less than 5, y will be 1, otherwise it will be zero