디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

심심해서 내보는 C 문제 [답공개]

ㅉㅉㅉ(24.98) 2011.08.20 14:38:45
조회 226 추천 0 댓글 6

1.
#include <stdio.h>
int a;
int main()
{
        printf("%d", a);
}

2.
#include <stdio.h>
int a;
int a = 77;
int a;
int main()
{
        printf("%d", a);
}

3.
#include <stdio.h>
extern int a;
int main()
{
        printf("%d", a);
}

4.
#include <stdio.h>
struct test* a;
int main()
{
    printf("%d", sizeof a);
}

직접 프로그램 돌려보지 말고
눈으로 봐서 이중에서 컴파일 되는 코드랑 안되는 코드 구별해보고
컴파일이 된다면 무슨 값이 나올지 예상해봐~ (컴파일이 안된다면 왜 안되는지 생각해보고)
각각 코드마다 "왜" 그런 결과가 나오는지 "정확히" 안다면 (ANSI C Standard)
C declaration, definition 개념은 제대로 알고있다고 보면 됨.















답:
1. 0
여기서 int a;는 변수 선언(declaration)이지 변수 정의(definition)가 아님.
하지만 컴파일러가 컴파일 할때
전역변수중 (extern이 안붙은) "declaration"만 있고 "definition"은 찾을수 없는 경우
int a = 0; 처럼 0으로 definition이 있는것으로 취급함 (ANSI C에선 tentative definition이라고 부름)
따라서 int a = 0; 이 있는거나 마찬가지이므로 답은 0.

2. 77
여기서 윗줄과 아랫줄의 int a;는 역시 "declaration"이지 "definition"이 아님.
하지만 이경우 int a = 77;의 definition이 선언되어 있기 때문에 tentative definition 적용 안되고
그냥 무난히 77 출력.
(변수 선언은 여러번 할수 있지만 변수 정의는 무조건 단 "하나"만 존재 할수 있음).

3. 컴파일 에러
이경우는 전역 변수가 extern이 앞에 붙어 있기 때문에 tentative definition이 적용 안되고
그냥 "declaration"으로만 취급. 따라서 definition을 찾을수 없는 변수를 사용할려고 하기 때문에 컴파일 에러임.

4. 4
이 문제는 카테고리가 약간 다른데 - _-;; 괜히 넣은듯함.
이 경우 struct test자체가 definition이 없기 때문에 incomplete type임.
하지만 incomplete type을 가르키는 포인터는 선언할수 있고 또한 incomplete type을 가르키는 포인터는
이미 컴파일러가 사이즈를 알고 있기 때문에 sizeof를 사용해도 아무 문제 없음.
(물론 struct test a; sizeof a 이런식으로 incomplete type 자체의 사이즈를 출력할려고 하면 컴파일 에러임).

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 기 세보여도 실제로는 멘탈 약할 것 같은 스타는? 운영자 24/11/04 - -
이슈 [디시人터뷰] 라이징 스타로 인정받은 걸그룹, ‘리센느(RESCENE)’ 운영자 24/11/08 - -
282904 노래 서바이벌 쇼 좀 그만했음 좋겠다 [2] 전간디갤로그로 이동합니다. 11.10.21 61 0
282903 나도 로또 사고 왔다.. [10] 쿄스케갤로그로 이동합니다. 11.10.21 135 0
282902 html5 배우기 힘들어? C, C++ 에 비교하면 어때? [1] ㅇㅇㅇ(58.77) 11.10.21 140 0
282901 직장생활 1년해보니깐 코딩 잘하고 못하고 연봉 많고 적고는 큰문제가 아닌 [3] ㅇㅇㅇㅇ(1.212) 11.10.21 223 0
282898 로또 샀다 [1] 어떡해갤로그로 이동합니다. 11.10.21 38 0
282897 형들 프로그래밍 학원 한달에 얼마정도 내야되?? [1] Aven갤로그로 이동합니다. 11.10.21 95 0
282895 형들 자바 이용해서 계산기좀 빨리 만들어줘 부탁해 [12] 오구리(59.5) 11.10.21 113 0
282894 임베디드 C 질문! [25] MUFF갤로그로 이동합니다. 11.10.21 190 0
282892 심심할땐 은꼴 [2] ,.,.(183.100) 11.10.21 157 1
282891 운동끝 로또 사러 가야징 [2] 쿄스케갤로그로 이동합니다. 11.10.21 59 0
282890 시험 끝 헤헤헤 534F444D61737465갤로그로 이동합니다. 11.10.21 31 0
282889 C++ 질문좀 하겠습니다 + 조공 라솔갤로그로 이동합니다. 11.10.21 151 0
282888 아.. 오랜만에 글쓰는데.. 질문글이다.. [4] 초밥술사(210.118) 11.10.21 67 0
282886 횽등 시뮬레이션 같은거 로하로하알로하갤로그로 이동합니다. 11.10.21 39 0
282885 이쁜살람보다 색기있는 사람이 더 좋더라 [4] 전간디갤로그로 이동합니다. 11.10.21 279 0
282884 C# [배열을 이용한 정렬] 좀 도와주세요.. [3] Sayrin갤로그로 이동합니다. 11.10.21 121 0
282882 디씨 클리너랑 캐쉬 클리너같은게 잇냐 로하로하알로하갤로그로 이동합니다. 11.10.21 48 0
282881 보안컨퍼런스 참가할사람? [4] 정수정•‿•갤로그로 이동합니다. 11.10.21 182 0
282880 노원 스파 보면 당연히 1등 많이 나올수 밖에 없을거 같음 [2] [성대아싸]갤로그로 이동합니다. 11.10.21 83 0
282879 야 너네들은 얼굴 [16] 로하로하알로하갤로그로 이동합니다. 11.10.21 177 0
282875 너님들이 가진 뇨자 개발자에 대한 환상을 접하고 나니 [2] 분당살람갤로그로 이동합니다. 11.10.21 112 0
282874 내가 횽들에게 진지하게 뭘 하나 물을게 [2] 어떡해갤로그로 이동합니다. 11.10.21 92 0
282873 내가 걱정하는 것을 알았어 !!! [2] 우하하(211.60) 11.10.21 59 0
282872 난 여성개발자에 대한 환상이 있다 [6] 얼빠진호랑이갤로그로 이동합니다. 11.10.21 203 0
282870 아 배고프다 [2] monoless갤로그로 이동합니다. 11.10.21 67 0
282869 이거 함수이름 아는사람 ㅠㅠ [8] MUFF갤로그로 이동합니다. 11.10.21 117 0
282867 저번에 GCGC라고 여성개발자모임터에서 주최한 세미나 가봤었는데... [5] 늅늅(115.23) 11.10.21 110 0
282866 전간디님이 퇴근을 하였습니다 [1] 전간디갤로그로 이동합니다. 11.10.21 39 0
282865 얼호 소환 [6] monoless갤로그로 이동합니다. 11.10.21 82 0
282864 deview 2011다녀와서 여자개발자에 대한 환상 깨짐 [2] ltw갤로그로 이동합니다. 11.10.21 159 0
282863 AVR Studio 5에서 ATmega128 쓸수 있나?ㅠㅠ [1] MUFF갤로그로 이동합니다. 11.10.21 52 0
282862 나 오늘 이걸로 로또 산다 레알 McHello갤로그로 이동합니다. 11.10.21 75 0
282861 니들 연봉의 비밀 [1] 개쉛기갤로그로 이동합니다. 11.10.21 153 0
282860 ㅋㅋ 나 이번에 내가 로또 1등 당첨될 확률임.. 부러워 하지마. [2] iljeomobolt갤로그로 이동합니다. 11.10.21 87 0
282859 아무리 그렇다고 해도 내가 시장에 가서 옷을 사 입을 수는 없지 않아? [1] 시불라미갤로그로 이동합니다. 11.10.21 78 0
282858 퇴원하빈다. 즐주말 다림줄갤로그로 이동합니다. 11.10.21 21 0
282856 와 ㅅㅂ 로또갤 가보니 장난 아니네 ㅋㅋ 100만원씩 지른다 ㅋㅋㅋ [3] 쿄스케갤로그로 이동합니다. 11.10.21 111 0
282855 아오 씨발 존나 짜증나네 [3] 나리링갤로그로 이동합니다. 11.10.21 95 0
282852 으헝.ㅅ. [7] 풀개미'ㅅ'갤로그로 이동합니다. 11.10.21 98 0
282851 5년이든10년이든 2000년대 들어서 고졸로 프로그래머 채용된다는건 [1] ㅁㅁ(220.93) 11.10.21 192 0
282850 리눅스 샌디브릿지에서 문제있다며? [3] ㄴㅇㄹ(77.13) 11.10.21 98 0
282849 이런것도 나름 제미있음... [8] iljeomobolt갤로그로 이동합니다. 11.10.21 148 0
282848 구석횽 아니였음 진심으로 x될뻔했다. [2] McHello갤로그로 이동합니다. 11.10.21 108 0
282847 MC헬로가 짤방 설명안해죠서 구글링한 결과 [1] 다림줄갤로그로 이동합니다. 11.10.21 96 0
282845 머라고! 여자사람이 나타났다고! [10] 얼빠진호랑이갤로그로 이동합니다. 11.10.21 247 0
282844 니들 로또는 사고 프갤질하냐? [1] 다림줄갤로그로 이동합니다. 11.10.21 59 0
282843 충격! 아까 그 개발자 남자였음!!! [1] 분당살람갤로그로 이동합니다. 11.10.21 88 0
282841 아나..도서관인데 배에서 소리 졸 크게낫네..후... [2] 므느으르(175.116) 11.10.21 118 0
282840 아나ㅋ검색하다 놀랬네 = [2] ㅋㄱ(183.96) 11.10.21 65 0
282839 프갤형들 api 질문좀 [3] ,.,.(222.121) 11.10.21 74 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2