[英]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.