在本书中,这是一个简单的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语句在这里是如何工作的。
答案 0 :(得分:3)
它是一个三元运算符..
condition? a: b
这意味着如果条件为真,则表达式将被处理,如果其为假,则b将被处理。
在您的代码中,它将检查n是否不在1-12范围内(月数)。如果它不在范围内,那么它将返回名称[0](即非法月份)。否则,如果它在范围内,那么它将使用n作为数组名称的索引打印月份名称。
答案 1 :(得分:2)
return (n < 1 || n > 12) ? name[0] : name[n];
可以改写为:
if (n < 1 || n > 12)
return name[0];
else
return name[n];
因此函数返回传递给函数的n = 1 ... 12的月份名称,否则返回“非法月份”。
答案 2 :(得分:1)
? :
是三元运营商。
如果n < 1 || n > 12
它将返回"Illegal month"
月份的其他名称。
答案 3 :(得分:1)
它被称为三元运算符,它意味着:如果n&lt; 1或n> 12,返回name[0]
- “非法月份”。否则,请返回name[n]
- 适当的月份。
答案 4 :(得分:1)
它等同于以下内容:
if(n < 1 || n > 12)
return name[0];
else
return name[n];
答案 5 :(得分:1)
扩展,返回语句等同于:
if (n < 1 || n > 12)
{
return name[0];
}
else
{
return name[n];
}
return语句使用三元操作,其语法如下:
(if condition)? true_return_value: false_return_value;
答案 6 :(得分:0)
虽然许多人指出这与以下内容相同:
if(n < 1 || n > 12)
return name[0];
else
return name[n];
这不完全正确。三元运算符是运算符,因此(n < 1 || n > 12) ? name[0] : name[n]
是表达式,而不是语句。更接近的例子是:
string ret_value;
if(n < 1 || n > 12)
ret_value = name[0];
else
ret_value =name[n];
return ret_value;
当你在事物中间需要条件时,这变得很重要:
return String.Format("The test {0} successful", bOK ? "WAS" : "was NOT");