본문

[잡담] C언어 코드블럭 잼민이 입니다. 입력하지 않은 값이 나옵니다.


글꼴


1

댓글 22

int a=0, b=0; 식으로 명시적인 초기화를 해주어야 합니다.

글루미2 | 220.76.***.*** | 21.12.09 00:16
글루미2

아, 원래 그렇다는 말씀이군요. IDE나 컴터 문제인줄 알고 긴장했는데...휴...감사합니다.

인민배우 심영 | 59.16.***.*** | 21.12.09 00:18

다른걸로 비유하면, a는 어떤 방에 들어가라고 하고, b는 어떤 방에 들어가라고 했는데 방청소를 안하고 들어가면 안에 이상한게 있을수 있다~고 생각해주시면 돼요. 방에 들어가기 전에는 방청소를 해야죠

루리웹-7189813554 | 58.225.***.*** | 21.12.09 00:25
루리웹-7189813554

내 방도 못 치우는데..ㅎㅎ 답변 감사드립니다.

인민배우 심영 | 59.16.***.*** | 21.12.09 00:53

쓰레기값이라고 합니다. 변수에 메모리를 할당하는데 이전 프로그램이 쓰던 값이라고 보시면되구요. 언어에 따라 쓰레기값을 지우고 디폴트값을 자동 할당하는 경우도 있지만 이경우는 해당이 없기 때문에 저렇습니다.

SAY L | 58.29.***.*** | 21.12.09 00:28
SAY L

그렇군요. VB 6.0을 배운적이 있는데, 그건 모양만드는 재미가 있었는데..커맨드라인에 글자만 나오니 솔직히 좀 무섭...네요..

인민배우 심영 | 59.16.***.*** | 21.12.09 00:53

코드블럭이 문제가 아니라 엉터리로 독학하고 계시는게 가장 큰 문제예요

와일드다운 | 211.106.***.*** | 21.12.09 00:42
와일드다운

역시, 학원에 다녀야 할까요. 교제에 나온 순서대로 하고있기는 한데..고민해봐야 겠네요.

인민배우 심영 | 59.16.***.*** | 21.12.09 00:51

C언어 기본책이라도 보시기 바랍니다. 책 앞장에 나오는 아주 기본적인 내용이예요.

DUH! | 112.187.***.*** | 21.12.09 00:52
DUH!

어......기본책인지는 모르지만 한빛미디어 에서 나오는 'C언어 기초' 우제남 저 보고 공부하고 있습니다. 그냥 책을 다 완독하고 질문을 하는 편이 좋겠군요...삼가하겠습니다.

인민배우 심영 | 59.16.***.*** | 21.12.09 00:55

언어에 따라 변수를 만들면 값이 자동 초기화 되기도 하는데 C언어는 그렇지는 않아서 사용할 변수는 값을 지정하거나 초기화 해서 쓰는게 좋아요

이피님 | 61.255.***.*** | 21.12.09 01:14
이피님

몰랐네요T..T 감사드립니다.

인민배우 심영 | 59.16.***.*** | 21.12.09 01:15

c, c++에서 초기화는 항상 하셔야해요. 운이 좋아서 0이 보일 수 있지만 메모리는 한정적이라 다른 변수가 쓰던 것이 해제되고 그 영역을 사용하게 되면 쓰레기 값이 남죠. 저는 학부시절에 열혈강의 시리즈 봤었는데... 그것만 해도 기초는 다 배우실 거라 봐요.

루리웹-1959315931 | 39.7.***.*** | 21.12.09 09:00
루리웹-1959315931

그리고 저런 내용 책에 있다곤 하지만 유념해서 보기 때문에 질문하시는게 나쁜거라고 보이진 않아요. 물어보면서 성장하는거니깐요. 8년차인 지금도 물어보는데요 모! ㅎㅎ

루리웹-1959315931 | 39.7.***.*** | 21.12.09 09:01
루리웹-1959315931

비슷한 문제로 malloc이나 new로 동적할당 하고서 안의 내용을 memset 안해주면 대참사가 일어나는 경우도 있죠.

루리웹-1959315931 | 39.7.***.*** | 21.12.09 09:03

C언어들도 최근 몇몇 IDE나 컴파일러들은 자동으로 0으로 초기화 해주기도 하나... 일단 초기화 작업 진행하는걸 습관들이셔서 항상 초기화 해주시기를 추천합니다. 일단 이유는 int a; 라고 변수를 선언하게 되면 메모리의 한 공간에 a라는 이름으로 공간을 할당 받게 됩니다. 근데 그 메모리라는 놈이 나만 쓰는게 아니자나요?? 일종의 공용 오피스인놈인지라.. 누군가(다른 프로그램)이 사용을 했던 장소일 수가 있습니다. 근데 그 누군가가 방을 빼기전에 청소를 하고 나갔다면 참 좋겠지만.. 아시자나요.. 개판으로 해놓고 나가는놈들 많은거... 그런 이유로 이전에 사용했던 흔적들(쓰레기 값 or 가비지 값)들이 남아있게 되서 해당 공간을 할당 받았을때 그 값들이 나오게 되는 그런 현상입니다. 즉, 새 집에 들어갈 때는(변수를 선언 할 때)는 집청소(초기화)를 하는것을 습관 들이셔야 합니다. C언어가 아닌 다른 언어를 공부하실때에도 자동으로 0으로 초기화를 해주는 언어라고 해도, 초기화를 해주는 작업은 코드를 육안으로 확인한다거나, 안전성 측면에서도 매우 좋은 습관 입니다.

다산=파산교주 | 1.255.***.*** | 21.12.09 09:51
다산=파산교주

감사합니다. ;,하고 같이 버릇들여야 겠네요

인민배우 심영 | 118.235.***.*** | 21.12.09 17:32

"int a"라는 구문은 "메모리 상에서 int형 (32 bit)만큼 공간을 잡고 거기에 a라는 이름을 붙인다."라는 뜻입니다. 메모리에서 각 bit은 0 또는 1의 값을 가질 수밖에 없습니다. 컴퓨터 전원이 켜질 때 처음에는 0일 수도 있고 1이 될 수도 있습니다. 따라서 메모리 공간을 잡기만 한 순간에는 그 32bit가 0000 ... 0000이라는 보장이 없습니다. 그래서 "int a = 0"처럼 따로 초기화를 하지 않으면 매번 다른 값이 나옵니다.

오잇스 | 210.107.***.*** | 21.12.09 12:43
오잇스

컴퓨터 입장에서 코드를 바라보는 게 필요하군요..-..- 답변 감사드립니다.

인민배우 심영 | 117.52.***.*** | 21.12.09 12:56
인민배우 심영

코딩할 때 벌어지는 요상한 일들은 대부분 컴퓨터의 동작을 깊게 바라 보아야지 이해 가능한 것들이 많습니다. 프로그래밍 언어들이 컴퓨터 내부 시스템까지 이해하지 않고도 프로그램을 작성할 수 있게는 해 주지만 가끔 이런 요상한 일들이 일어나기는 하거든요. https://bbs.ruliweb.com/etcs/board/700079/read/490? 제가 심영님 공부에 도움이 될 만한 책을 하나 추천드립니다. 제가 심영님 나이가 몇 살인지 몰라 알맞은 수준의 책을 추천했는지는 모르겠으나 비전공자도 읽을 수 있을 정도로 쉽게 쓰여진 책이라 정말 초등학생이라 하실지라고 이해하시는 데에는 크게 무리가 없을 것으로 생각됩니다. 프로그래밍 공부와 병행하면서 틈틈히 이 책을 읽으면 프로그래밍이라는 것을 왜 하는지 이해하시는 데에 도움이 될 것이라 생각합니다.

오잇스 | 210.107.***.*** | 21.12.09 13:02

프로그래밍 왜 하시는지는 모르겠지만 일단은 독학부터 그만두시고 C 대신 스크래치나 파이썬 같은거 배워보시길 권합니다

와일드다운 | 211.106.***.*** | 21.12.09 16:21

책 읽으라고 하는 사람들 때문에 기죽어서 질문을 삼가하지는 마시길 바랍니다. 모르면 생각날 때 질문하세요. 물론 책 잘 읽어봐야하고, 유료 강의 들으면 돈 값 합니다. 하지만 취미로 시작하셨으니까, 자기 페이스로 하세요. '내가 너무 하찮은 질문을 했구나' 같은 생각하지 말고 즐기면서 하세요. 안 그러면 금방 흥미 잃습니다. 다만, 검색은 많이 하세요. 특히 영어로... 아무리 열심히 공부해도 그 다음엔 모르는 것이 있고, 나한테 알려줄 수 있는 사람도 없어집니다. 스스로 찾아낼 수 있어야 합니다. 쓰레기 값은 C에서는 상식적인 내용이고 모르면 큰일날 내용이지만, 왜 쓰레기 값이란게 있는가? 메모리는 어떻게 구성되어 있는가? 메모리 할당은 어떻게 되는가? 를 제대로 아는 것은, 코드 수준에서 잘 보이지 않는 문제를 해결하는데 큰 도움을 줍니다. 지금 신경쓰실 부분은 아니지만... 수동적으로 공부하지마시고, 능동적으로 공부하세요. 생각 많이 해보고, 검색 많이 해보고, 안되면 질문도 많이 하세요. 별거아닌 질문일 수도 있지만, 제대로 이해하면 정말 중요한 문제를 풀어낼 수 있습니다.

plok | 220.117.***.*** | 21.12.09 19:41
댓글 22
1
목록보기
위로가기
와이플 | 추천 0 | 조회 60 | 날짜 2022.01.14
와이플 | 추천 0 | 조회 119 | 날짜 2022.01.13
와이플 | 추천 1 | 조회 284 | 날짜 2022.01.13
인민배우 심영 | 추천 0 | 조회 260 | 날짜 2022.01.09
인민배우 심영 | 추천 0 | 조회 294 | 날짜 2022.01.08
오잇스 | 추천 0 | 조회 182 | 날짜 2022.01.05
인민배우 심영 | 추천 0 | 조회 156 | 날짜 2022.01.02
인민배우 심영 | 추천 0 | 조회 132 | 날짜 2021.12.31
인민배우 심영 | 추천 0 | 조회 460 | 날짜 2021.12.30
인민배우 심영 | 추천 1 | 조회 267 | 날짜 2021.12.27
salvare545 | 추천 0 | 조회 171 | 날짜 2021.12.27
_ 식봉이는 식봉해 | 추천 4 | 조회 355 | 날짜 2021.12.27
인민배우 심영 | 추천 0 | 조회 243 | 날짜 2021.12.25
인민배우 심영 | 추천 1 | 조회 224 | 날짜 2021.12.24
인민배우 심영 | 추천 0 | 조회 480 | 날짜 2021.12.16
V1046R-MAHORO | 추천 1 | 조회 172 | 날짜 2021.12.14
인민배우 심영 | 추천 0 | 조회 317 | 날짜 2021.12.10
오잇스 | 추천 4 | 조회 359 | 날짜 2021.12.09
인민배우 심영 | 추천 0 | 조회 553 | 날짜 2021.12.09
오잇스 | 추천 1 | 조회 594 | 날짜 2021.12.08
인민배우 심영 | 추천 0 | 조회 400 | 날짜 2021.12.07
인민배우 심영 | 추천 0 | 조회 324 | 날짜 2021.12.06
인민배우 심영 | 추천 0 | 조회 387 | 날짜 2021.12.05
키라 요시카게 | 추천 0 | 조회 583 | 날짜 2021.12.05
인민배우 심영 | 추천 1 | 조회 363 | 날짜 2021.12.04
인민배우 심영 | 추천 0 | 조회 328 | 날짜 2021.11.30
인민배우 심영 | 추천 0 | 조회 345 | 날짜 2021.09.26
Quiple | 추천 0 | 조회 366 | 날짜 2021.09.16

1 2 3

글쓰기