我已经声明了变量时发生了未声明的标识符错误

时间:2009-11-15 15:22:33

标签: c

我从以下代码中得到了一个未声明的标识符错误,但我在两种情况下都清楚地声明了变量“length”。我做错了什么?

int startWordLenRec(char s[]) {
    if (isLetter(s) == false){
        int length = 0;
    }
    else if{
        int length = 1 + startWordLenRec(s+1);
    }
    return length;
}

6 个答案:

答案 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” 。因此,如果陈述

,它在外面是不可见的