2015-07-09 2 views
-5

Я пытаюсь показать номер, который я указал в программе, но получаю следующую ошибку:Необъявленный идентификатор 'number', как мне обойти это?

main.c (23): ошибка # 2048: Необъявленный идентификатор 'number'.

#include <stdio.h> 



int main() 

{ 

{ 

int number = 32 ; 

} 

printf("integer is %d \n", number); 

    return 0; 
} 

Я знаю, решение это должно быть очень простым для некоторых пользователей, однако я уверен, следуя инструкции из книги, и, насколько я знаю, я слежу к письму.

Пожалуйста, любая помощь будет принята с благодарностью.

+2

У вас есть проблемы с областью. Удалите скобки внутреннего блока и повторите попытку. – Olaf

ответ

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, это звучит лучше, чем « первое правило обзора состоит в том, что вы не говорите о скоринга »;-)

0

Брекеты {} в C используется для введения блока, и этот блок является собственной областью, переменные, объявленные в этом блоке, являются локальными для этого блока и вложенными блоками внутри него.

Когда вы объявляете number в своем собственном блоке, переменная объявляется только в этом блоке, а не в внешнем блоке. Таким образом, решение очень простое: Удалите скобки и поставить переменную во внешнем блоке:

int main() 
{ 
    int number = 32 ; 

    printf("integer is %d \n", number); 

    return 0; 
} 
0

Объявление number заключено в его собственный блок с фигурными фигурными скобками, только в этом блоке, поэтому пытается получить доступ к нему за пределами этого блока, что приведет к ошибке. Решение заключается в перемещении декларации за пределами этого блока (удалите лишние фигурные скобки вокруг него),

0

Пожалуйста, indent ваш код. Вы объявили и инициализировали целочисленную переменную, которая живет только во внутренних фигурных скобках. Следовательно, «число» уничтожается и не существует при достижении команды printf.

Этот следующий код работает, как вы ожидаете:

int main() 
{ 
    int number = 32 ; 
    printf("integer is %d \n", number); 
    return 0; 
}