디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅉㅉㅉ(24.98) 2011.08.20 14:38:45
조회 228 추천 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 - -
282653 횽들 XOR [3] C셔틀(121.140) 11.10.21 41 0
282650 나를 찾으러 떠나다. [7] 바보플머(183.101) 11.10.21 80 0
282648 kmea7횽 그 사이트 좋은가요? [1] 534F444D61737465갤로그로 이동합니다. 11.10.21 20 0
282647 형들 자료구조 공부하고싶은데 책 추천할거 없나여? [3] Re-FEEL갤로그로 이동합니다. 11.10.20 102 0
282646 국내 웹호스팅에 함부로 소스올리지마라. [2] 쵸쵸(219.251) 11.10.20 116 0
282645 plc [1] 이건산전갤로그로 이동합니다. 11.10.20 61 0
282644 10010251.0515036412130.213531.20.2.14545 [2] 534F444D61737465갤로그로 이동합니다. 11.10.20 45 0
282643 전간디, 내 이름을 기억하라 [6] 전간디갤로그로 이동합니다. 11.10.20 81 0
282642 오늘 프겔 흥하네 [2] 116.44(110.11) 11.10.20 83 0
282641 프로세스의 PC(program counter) 와 쓰레드 PC 질문좀.. [4] 잉..(203.253) 11.10.20 73 0
282640 횽들 리눅스있잖아 [7] DNB갤로그로 이동합니다. 11.10.20 82 0
282638 ㅋㅋㅋㅋㅋㅋㅋ6시간동안 쓴 레포트가 사라졌읍니다 ㅋㅋㅋㅋㅋㅋㅋ [7] healslave갤로그로 이동합니다. 11.10.20 84 0
282637 횽들 진로 상담좀. 해줘 [21] 1234(110.11) 11.10.20 190 0
282636 웹프로그래밍 쫌 하는사람 !! [20] 김발등(175.125) 11.10.20 203 0
282635 오늘은 월급날 그리고 내일만 지나면 황금주말. [5] 116.44(110.11) 11.10.20 80 0
282634 오늘 willy라는 애플 매장을 갔는데 [3] 분당살람갤로그로 이동합니다. 11.10.20 71 0
282633 횽들 분할 컴파일 할 떄 [23] 로하로하알로하갤로그로 이동합니다. 11.10.20 151 0
282632 전간디님이 퇴근길에 올랐습니다 전간디갤로그로 이동합니다. 11.10.20 34 0
282631 비주얼스튜디오C++ 2011년도버전은 구할수없나요? [5] ㅇㅇㅇㅇ(119.207) 11.10.20 79 0
282630 에이젝스하라. 에이젝스하라. [1] 쵸쵸(219.251) 11.10.20 61 0
282628 [6] Re-FEEL갤로그로 이동합니다. 11.10.20 47 0
282627 밑에 C 소수점 찾기 보니까 공대생 플머와 걍 플머의 차이점이 보인다. [4] 로하로하알로하갤로그로 이동합니다. 11.10.20 113 0
282626 이시간대에는 조용할려나.. 현역 프로그래머로 일하고 있는 사람있어?? [38] ㅁㄴㅇㅁㄴㅇ(182.208) 11.10.20 173 0
282625 페도라 15에서 libtcl8.4.so 쓰려면 [2] 분당살람갤로그로 이동합니다. 11.10.20 39 0
282624 C언어 고수 프로그래머 형님들 도와주세요 ㅠㅠ [7] 선고갤로그로 이동합니다. 11.10.20 125 0
282623 횽들 삼차원배열 포인터 관련 질문 좀;; [4] 모험원자갤로그로 이동합니다. 11.10.20 59 0
282622 혹시 서버 프로그래머횽 있나여? [8] ,.,.(183.100) 11.10.20 139 0
282621 아랫 글 질문에대한 해답과 그 예제 [2] 질문쟁이(203.255) 11.10.20 53 0
282620 커뮤니티 사이트 구축 어렵나요? [1] ㅁㄴㅇ(121.164) 11.10.20 78 0
282619 와 진짜 C++ 플밍하는데 존나 두근거림 [4] 로하로하알로하갤로그로 이동합니다. 11.10.20 109 0
282617 아...페도라...현재 상황...T.T 분당살람갤로그로 이동합니다. 11.10.20 61 0
282616 구글 문서도구 오랬만에 들어갔는데 인터페이스가 깔끔해짐 [성대아싸]갤로그로 이동합니다. 11.10.20 47 0
282615 프로그래밍 갤러리에서 프로그램 하나 물어봐도 되는지.. [3] 바크갤로그로 이동합니다. 11.10.20 75 0
282614 성님들 좀 봐달랑께 [6] 늅늅이(165.246) 11.10.20 70 0
282613 반복적으로 여러번 Dynamic allocation을 하는 방법에 관하여 [5] 질문쟁이(203.255) 11.10.20 54 0
282612 csh 문제 해결! 분당살람갤로그로 이동합니다. 11.10.20 66 0
282611 헬로 월드 문신 하고 싶다 [6] 1(125.135) 11.10.20 89 0
282610 정보올림피아드 이건산전갤로그로 이동합니다. 11.10.20 51 0
282608 페도라 문제 스샷!! [1] 분당살람갤로그로 이동합니다. 11.10.20 58 0
282607 야구 마지막에 재밌게 해주네 ㄷㄷ [2] 꼬꼬월드갤로그로 이동합니다. 11.10.20 71 0
282605 win api 교재 추천좀 해주세요... [3] ㅁㄴㅇㄹ(182.213) 11.10.20 83 0
282604 페도라 또 질문! [5] 분당살람갤로그로 이동합니다. 11.10.20 41 0
282602 언녕 나 왓어 로하로하알로하갤로그로 이동합니다. 11.10.20 28 0
282601 우하하는 봐라 ㄴㄴㅇ(116.36) 11.10.20 24 0
282600 횽들 나 열혈강의 자바프로그래밍 샀는데 ..궁금한게 이썽! [3] 아자(211.237) 11.10.20 120 0
282599 페도라 다시 질문! 분당살람갤로그로 이동합니다. 11.10.20 22 0
282598 형님들 낼 컴퓨터프로그래밍 시험인데 C++이없어서 공부를못하겟으요.. [3] ㅇㅇㅇ(119.207) 11.10.20 55 0
282596 API 질문좀여! API(119.68) 11.10.20 35 0
282595 누나가 내 면도기를 쓰기 시작한 이후로, 잔소리가 안먹힘 그래서... [6] [성대아싸]갤로그로 이동합니다. 11.10.20 126 0
282594 나 퇴갤 어떡해갤로그로 이동합니다. 11.10.20 24 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2