Необъявленный идентификатор "номер", как мне обойти это?
Я пытаюсь показать число, указанное в программе, но получаю следующую ошибку:
main.c (23): ошибка № 2048: необъявленный идентификатор "число".
#include <stdio.h>
int main()
{
{
int number = 32 ;
}
printf("integer is %d \n", number );
return 0;
}
Я знаю, что решение этого должно быть очень простым для некоторых пользователей, однако я следую инструкциям из книги и, насколько я знаю, я следую письму.
Пожалуйста, любая помощь будет принята с благодарностью.
4 ответа
Ваша проблема в определении объема:
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;
}
То, что происходит в скобках, остается в скобках.
(в общем, это звучит лучше, чем "первое правило определения объема - то, что вы не говорите об определении объема";-)
Фигурные скобки {}
в C используется для введения блока, и этот блок является его собственной областью действия, переменные, объявленные в этом блоке, являются локальными для этого блока и вложенных блоков внутри него.
Когда вы объявляете number
в своем собственном блоке переменная объявляется только в этом блоке, а не во внешнем блоке. Поэтому решение очень простое: удалите фигурные скобки и поместите переменную во внешний блок:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}
Пожалуйста, сделайте отступ вашего кода. Вы объявили и инициализировали целочисленную переменную, живущую только во внутренних скобках. Следовательно, "число" уничтожается и не существует, когда достигается команда printf.
Следующий код работает так, как вы ожидаете:
int main()
{
int number = 32 ;
printf("integer is %d \n", number );
return 0;
}
Декларация number
заключен в собственный блок с фигурными скобками, поэтому область видимости есть только в этом блоке, поэтому попытка доступа к нему за пределами этого блока приводит к ошибке. Решение состоит в том, чтобы переместить объявление за пределы этого блока (убрать лишние фигурные скобки вокруг него),