C 这个返回语句是什么意思
在本书中,这是一个简单的C函数:C 这个返回语句是什么意思,c,ternary-operator,conditional-operator,return,C,Ternary Operator,Conditional Operator,Return,在本书中,这是一个简单的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 >
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];
}
char*月份名称(int n)
{
静态字符*名称[]={
“非法月份”,
“一月”、“二月”、“三月”,
“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”,
“十月”、“十一月”、“十二月”
};
返回(n<1 | n>12)?名称[0]:名称[n];
}
这个函数的作用很容易理解,但我不理解return语句,这个return语句在这里是如何工作的。
?:代码>是三元运算符
如果n<1 | | n>12
它将返回“非法月份”
该月份的其他名称。它被称为三元运算符,它的意思是:如果n<1或n>12,则返回名称[0]
-“非法月份”。否则,返回name[n]
-正确的月份。它相当于以下内容:
if(n < 1 || n > 12)
return name[0];
else
return name[n];
if(n<1 | | n>12)
返回名称[0];
其他的
返回名称[n];
返回(n<1|n>12)?名称[0]:名称[n]代码>可以重写为:
if (n < 1 || n > 12)
return name[0];
else
return name[n];
if(n<1 | | n>12)
返回名称[0];
其他的
返回名称[n];
所以函数返回传递给函数的n=1…12的月份名称,否则返回“非法月份”。展开后,返回语句等价于:
if (n < 1 || n > 12)
{
return name[0];
}
else
{
return name[n];
}
这是一个三元运算符
condition? a: b
这意味着如果条件为真,则将处理表达式a,如果条件为假,则将处理表达式b
在代码中,它将检查n是否不在1-12(月数)范围内。如果不在范围内,则返回名称[0](即非法月份)。否则,如果它在该范围内,它将使用n作为数组名称的索引来打印月份名称。许多人指出这与:
if(n < 1 || n > 12)
return name[0];
else
return name[n];
你不明白哪一部分??:代码>运算符?您不明白该语句中的什么内容??:
称为条件运算符。许多人(错误地)称它为三元运算符,因为它由3个子表达式组成;但是C标准在任何地方都没有这个名字。@pmg:三元运算符是正确的(这里的确定粒子很重要):它是语言中唯一的三元运算符。它是条件运算符这一事实并不意味着它是错误的。这是一种非常冗长的编写方法。较短的是:返回名称[n<1 | | n>12?0:n]代码>
if(n < 1 || n > 12)
return name[0];
else
return 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");