Необъявленный идентификатор "номер", как мне обойти это?

Я пытаюсь показать число, указанное в программе, но получаю следующую ошибку:

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 заключен в собственный блок с фигурными скобками, поэтому область видимости есть только в этом блоке, поэтому попытка доступа к нему за пределами этого блока приводит к ошибке. Решение состоит в том, чтобы переместить объявление за пределы этого блока (убрать лишние фигурные скобки вокруг него),

Другие вопросы по тегам