繁体   English   中英

我正在尝试用C语言编写的简单函数中出现“未使用的变量”和“未声明的标识符”的错误,但我不明白为什么

[英]Getting errors of “unused variable” and “undeclared identifier” in simple function I am trying to write in C and I can't understand why

因此,作为哈佛CS50课程的一部分,我正在编写一个密码程序,并且我有这段代码来检查字符+密码密钥是否会将其排除在ASCII字母范围之外,如果可以,则将其循环返回(以及保留该密码)案件)。 循环通过的数组类型为'char'(在plainText中)和'int'(在cipherArray中)

if (((plainText[i] < 91) && ((plainText[i] + cipherArray[j]) > 90)) || ((plainText[i] > 97) && ((plainText[i] + cipherArray[j]) > 122))) 
            {
                printf("%c", ((plainText[i] + cipherArray[j]) - 26));
            }
            else
            {
                printf("%c", (plainText[i] + cipherArray[j]));
            }

但是上面的代码有点笨拙,我试图通过将其替换为我编写的函数来整理它:

char codeLetters(char a, int b)
{
    if (((a < 91) && (a + b) > 90) || ((a > 97) && (a + b) > 122))
    {
        char c = (a + b) - 26;
    }
    else
    {
        char c = a + b;
    }

    return c;
}

然后我可以用以下方法调用该函数:

char code = codeLetters(plainText[i], cipherArray[j]);
            printf("%c", code);

但是,当我尝试对其进行编译时,出现以下错误:

vgen1.c:114:14:错误:未使用的变量'c'[-Werror,-Wunused-variable] char c =(a + b)-26; ^ vgen1.c:118:14:错误:未使用的变量'c'[-Werror,-Wunused-variable] char c = a + b; ^ vgen1.c:121:12:错误:使用未声明的标识符'c'返回c;

有人可以让我知道我要去哪里了吗? 为了记录,我在此代码中还有另一个功能可以正常运行

有人可以让我知道我要去哪里了吗?

问题是您 if语句中声明了变量c ,所以变量的作用域只是在if 因此,声明:

return c;

由于函数范围内未定义c ,因此无法正确执行。 将您的codeLetters函数更改为:

char codeLetters(char a, int b)
{
    char c;
    if (((a < 91) && (a + b) > 90) || ((a > 97) && (a + b) > 122))
    {
        c = (a + b) - 26;
    }
    else
    {
        c = a + b;
    }

    return c;
}

有关变量范围的信息,请参见此问题

c的范围限制在声明它的块内,返回它不可见

char codeLetters(char a, int b)
{
    if (((a < 91) && (a + b) > 90) || ((a > 97) && (a + b) > 122))
    {
        char c = (a + b) - 26;
    }
    else
    {
        char c = a + b;
    }

    return c; // c is not visible here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM