【发布时间】:2014-10-31 18:10:18
【问题描述】:
在书中这些是一个简单的 C 函数:
char *month_name(int n)
{
static char *name[] = {
"Illegal month",
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
};
return (n < 1 || n > 12) ? name[0] : name[n];
}
这个函数的作用很容易理解,但是return语句我没看懂,这里return语句是怎么工作的。
【问题讨论】:
-
哪一部分你不明白?
? :运算符? -
那句话中的什么你不明白?
-
?:称为条件运算符。许多人(错误地)称它为三元运算符,因为它由3个子表达式组成;但 C 标准在任何地方都没有这个名称。 -
@pmg: 三元运算符是正确的(定冠词在那儿很重要):它是语言中唯一的三元运算符。它是条件运算符这一事实并没有错。
-
这是一种非常冗长的写法。更短的是:
return name[n < 1 || n > 12 ? 0 : n];
标签: c ternary-operator conditional-operator return