디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅉㅉㅉ(24.98) 2011.08.20 14:38:45
조회 227 추천 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 - -
282780 웹서비스 다국어 지원 하는 형들 있어? [7] 수상한김토끼갤로그로 이동합니다. 11.10.21 69 0
282779 개발자가 행복할때 [4] MUFF갤로그로 이동합니다. 11.10.21 131 0
282778 씨발 도둑 새끼들 [9] 로하로하알로하갤로그로 이동합니다. 11.10.21 94 0
282777 아스트라로테 횽에게 "삼송거 사지 마라 마랴"라고 하려고 했는데 [1] 분당살람갤로그로 이동합니다. 11.10.21 69 0
282776 은꼴?? [1] 534F444D61737465갤로그로 이동합니다. 11.10.21 93 0
282774 개발자로 들어가는데 영어공부가 왜 [13] 알오티씨플머갤로그로 이동합니다. 11.10.21 250 0
282773 돈 빼빼로가 있군... [3] blackd갤로그로 이동합니다. 11.10.21 110 0
282772 취업하고싶다 [3] 얼룩돼지갤로그로 이동합니다. 11.10.21 99 0
282770 있다 집갈 때 로또나 사야겠다. MUFF갤로그로 이동합니다. 11.10.21 44 0
282769 미아리고개 성심병원 싸움 본사람 [11] 쿄스케갤로그로 이동합니다. 11.10.21 142 0
282766 개발자로 있으면서 진지빨지 말아라 [15] 개쉛기갤로그로 이동합니다. 11.10.21 265 0
282765 저의 꿈은 SW 업계에서 병신 King이 되는 것입니다 [4] 분당살람갤로그로 이동합니다. 11.10.21 89 0
282763 그래..그럴지도 모르지 올려놓으면 ㅠㅠ [4] 오미(125.141) 11.10.21 45 0
282761 아래에 진짜 좋은 노트북 추천해줌 [4] 뽁뽁(218.48) 11.10.21 119 0
282760 혹시 232를 노트북에서 노트북으로 연결할수있음? [3] wef(168.154) 11.10.21 120 0
282758 짤방 [5] 얼룩돼지갤로그로 이동합니다. 11.10.21 133 0
282756 어셈블리어좀 하시는형 있나요?? [3] 오미(125.141) 11.10.21 65 0
282755 asp.net 웹서버 올리려면 어케해야함? [3] 초짜18호(115.91) 11.10.21 89 0
282753 루카와 리나 코스프레 작품이라니 헠헠 [5] 얼룩돼지갤로그로 이동합니다. 11.10.21 521 1
282752 으아니 엑셀 회계 장부 비교하는법좀 알려줘 [1] ㅁㄴㅇ(118.220) 11.10.21 54 0
282751 네이버 블로그 말야.. 포스팅 자주하는 위주로 띄워주나? [3] blackd갤로그로 이동합니다. 11.10.21 81 0
282750 프갤와서 맨처음 썼던글이 꼬꼬월드갤로그로 이동합니다. 11.10.21 31 0
282749 [끌어올리기] 면도기 같이 쓰지마라 겨드랑이 다림줄갤로그로 이동합니다. 11.10.21 88 0
282748 창문을 열어두면 가끔 옆집 신혼부부 싸우는 소리가 들리는데 [8] 어떡해갤로그로 이동합니다. 11.10.21 128 0
282747 댓글 새로고침 할때마다 느끼는건데.. 디씨 php개발자들은.. 대체... [4] blackd갤로그로 이동합니다. 11.10.21 200 0
282745 csocket관련 질문 jiwons(124.5) 11.10.21 37 0
282744 자바좀하는형들 도움 좀 구해볼게여 [1] linguistics(168.188) 11.10.21 74 0
282743 엑셀 회계장부 비교하는법좀 알려주셈 [3] ㅁㄴㅇ(118.220) 11.10.21 236 0
282740 도서관에서 php 책 빌려왔는데 무슨 1000페이지가 넘음..? [4] 생수생수봉지(218.147) 11.10.21 98 0
282738 저의 꿈은 병신 King이 되는 것입니다 분당살람갤로그로 이동합니다. 11.10.21 41 0
282735 프갤 횽들 엑셀 비교하는것좀 가르쳐줘 [5] 우리동네특공(118.220) 11.10.21 67 0
282733 니들은 30 찍엇을때 연봉 얼마나 받을 수 있을것같냐 ?? [7] 개쉛기갤로그로 이동합니다. 11.10.21 199 0
282732 면접보라고 문자왔는데 [1] 얼룩돼지갤로그로 이동합니다. 11.10.21 87 0
282730 니들 로또는 사고 프갤질하냐? [9] 다림줄갤로그로 이동합니다. 11.10.21 105 0
282728 형들 띄어쓰기 누가만든지 암? [2] ,.,(183.100) 11.10.21 73 0
282727 내가 그랬지? 우리나라 부동산 위험 하다고.. 곳 폭락 할꺼라고!! [20] rntjr(121.190) 11.10.21 214 0
282726 횽 스도쿠로 프로그래밍 적성 판단하는게 옳아? 다림줄갤로그로 이동합니다. 11.10.21 78 0
282725 생산의 신(god)이 되어보자! 다림줄갤로그로 이동합니다. 11.10.21 44 0
282723 요즘 php 개발자 구하기 힘든가보다 [5] monoless갤로그로 이동합니다. 11.10.21 148 0
282722 입개르르르르~ [2] 다림줄갤로그로 이동합니다. 11.10.21 31 0
282721 객체지향으로 간단한 갤러그 슈팅게임을 만드려면 어떻게해야하지? [3] 갤러그(119.70) 11.10.21 83 0
282720 시각차이 [1] MUFF갤로그로 이동합니다. 11.10.21 52 0
282719 횽들 메모리 참조 명령어 같은거 암? [1] 금고래갤로그로 이동합니다. 11.10.21 47 0
282718 오늘의 희망 퇴근시간을 적어봅니다 [7] 전간디갤로그로 이동합니다. 11.10.21 112 0
282717 고등학교 때 휴학하면 [1] 멀티.갤로그로 이동합니다. 11.10.21 83 0
282716 우왕.. 퍼즐 하나 다 맞춤... [1] iljeomobolt갤로그로 이동합니다. 11.10.21 43 0
282714 8시간만 버티면 됩니다 [1] 전간디갤로그로 이동합니다. 11.10.21 52 0
282713 야 솔데스크 학원어떠냐 [4] 간첩선갤로그로 이동합니다. 11.10.21 283 0
282712 정보올림피아드 [1] 이건산전갤로그로 이동합니다. 11.10.21 53 0
282710 프로그래밍 적성 테스트 [3] 바보플머(183.101) 11.10.21 695 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2