#include <stdio.h>
void main() {
int a=10;
static int b=20;
{
int a=5;
b=a+10;
}
printf("a=%d b=%d\n", a, b);
}
해당 코드를 실행하면 왜 a=10, b=15가 나오는거임?
a는 전역 변수라서 안에 있는 거 영향없이 10이 그대로 나오는 것 같고(내 생각)
b는 static 정적 전역변수를 찾아봐도 명확한 이유를 모르겠음...
진짜 제대로 C알못이니 설명해주면 ㄳ ㅠ
1. a는 전역변수가 아님 2. { } 안에서 변수를 선언하면 그 범위 안에서만 변수가 작동하고 범위 밖으로 빠져나가면 소멸함 a에 5를 대입했다고 생각했겠지만 저건 또다른 a를 새로 만든거고 니가 의도한걸 하려면 a = 5를 했어야 함
내가 의도한 코드를 짰다기보단 풀고있는 문제가 이렇게 나와있어서 가져와봤어. 1. 맨 처음 int a=10; << 이건 전역변수가 맞는거지? 2. 그리고 b가 15인 이유를 알고 싶은데 중괄호 안에다 선언한 지역변수가 static보다 적용하는 우선순위가 높은거야? 구글링을 해봐도 알맞은 예제가 안나오네..
1. 지역변수임 전역변수에 하려면 main() 바깥에 작성해야함 2. 중괄호 안에 b=a+10 한건 선언한게 아님 선언은 자료형을 붙여서 int b 처럼하는게 선언이고 저건 그냥 대입이지
뭘 보고 공부했길래 기본 개념을 이렇게 심하게 오해했는지 좀 궁금하네...