未声明的标识符 'number',我该如何解决这个问题?
Undeclared identifier 'number', how do I get around this?
我试图显示我在程序中指定的数字,但收到以下错误:
main.c(23):错误 #2048:未声明的标识符 'number'。
#include <stdio.h>
int main()
{
{
int number = 32 ;
}
printf("integer is %d \n", number );
return 0;
}
我知道这个问题的解决方案对某些用户来说一定非常简单,但是我正在按照书中的说明进行操作,据我所知,我是在照章办事。
如有任何帮助,我们将不胜感激。
C中的大括号{}
用于引入一个块,该块是它自己的作用域,在该块中声明的变量是该块的局部变量,并且在其中嵌套块。
当您在自己的块中声明 number
时,变量仅在该块中声明,而不是在外部块中声明。所以解决方法很简单:去掉大括号,把变量放在外块:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}
你的问题是scoping:
int main()
{
{
int number = 32 ; <== Number enters scope here
} <== Number leaves scope here
printf("integer is %d \n", number ); <== Number is out of scope scope here
return 0;
}
What happens within brackets, stays within brackets.
(weeeell,听起来比 "the first rule of scoping is that you don't talk about scoping" 好;-)
number
的声明用花括号括在它自己的块中,因此仅在该块中具有作用域,因此尝试在该块之外访问它会产生错误。解决方案是将声明移到该块之外(删除它周围多余的花括号),
请indent你的代码。
您声明并初始化了一个仅存在于内部大括号中的整数变量。
因此,"number"在到达printf指令时被破坏,不存在。
以下代码如您所愿:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}
我试图显示我在程序中指定的数字,但收到以下错误:
main.c(23):错误 #2048:未声明的标识符 'number'。
#include <stdio.h>
int main()
{
{
int number = 32 ;
}
printf("integer is %d \n", number );
return 0;
}
我知道这个问题的解决方案对某些用户来说一定非常简单,但是我正在按照书中的说明进行操作,据我所知,我是在照章办事。
如有任何帮助,我们将不胜感激。
C中的大括号{}
用于引入一个块,该块是它自己的作用域,在该块中声明的变量是该块的局部变量,并且在其中嵌套块。
当您在自己的块中声明 number
时,变量仅在该块中声明,而不是在外部块中声明。所以解决方法很简单:去掉大括号,把变量放在外块:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}
你的问题是scoping:
int main()
{
{
int number = 32 ; <== Number enters scope here
} <== Number leaves scope here
printf("integer is %d \n", number ); <== Number is out of scope scope here
return 0;
}
What happens within brackets, stays within brackets.
(weeeell,听起来比 "the first rule of scoping is that you don't talk about scoping" 好;-)
number
的声明用花括号括在它自己的块中,因此仅在该块中具有作用域,因此尝试在该块之外访问它会产生错误。解决方案是将声明移到该块之外(删除它周围多余的花括号),
请indent你的代码。 您声明并初始化了一个仅存在于内部大括号中的整数变量。 因此,"number"在到达printf指令时被破坏,不存在。
以下代码如您所愿:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}