我从以下代码中得到了一个未声明的标识符错误,但我在两种情况下都清楚地声明了变量“length”。我做错了什么?
int startWordLenRec(char s[]) {
if (isLetter(s) == false){
int length = 0;
}
else if{
int length = 1 + startWordLenRec(s+1);
}
return length;
}
答案 0 :(得分:4)
您已在两个不同的块中声明了两个变量,但之后尝试在这些块之外使用它们。相反,您想要声明一个变量,并在每个块中为其分配一个值:
int startWordLenRec(char s[]) {
int length;
if (isLetter(s) == false){
length = 0;
}
else {
length = 1 + startWordLenRec(s+1);
}
return length;
}
(我从“else”之后删除了无关的“if”。)
但是,条件表达式会更清晰(IMO):
int startWordLenRec(char s[]) {
return isLetter(s) ? 1 + startWordLenRec(s+1) : 0;
}
答案 1 :(得分:4)
声明是您声明它的范围的本地声明。因此,如果您在{}
中声明它,则在结束}
之后无法使用它。
int startWordLenRec(char s[]) {
int length;
if (isLetter(s) == false){
length = 0;
}
else if{
length = 1 + startWordLenRec(s+1);
}
return length;
}
当然,您也可以直接return 0;
,而无需单独的变量。
答案 2 :(得分:1)
将长度声明移到if语句之外。你的当前声明它的方式是在if语句执行后停止退出所以返回长度总是未声明的
答案 3 :(得分:1)
在if语句之外声明长度。
答案 4 :(得分:1)
length
需要在顶部声明,因为它在if和outside的两个分支中使用(在return语句中)。
答案 5 :(得分:0)
您在第一个和第二个if语句中声明了变量“length” 。因此,如果陈述
,它在外面是不可见的