본문

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




(315557)
작성일 프로필 열기/닫기
추천 | 조회 1081 | 댓글수 22
글쓰기
|

댓글 | 22
1
 댓글


(IP보기클릭)220.76.***.***

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

(IP보기클릭)59.16.***.***

글루미2
아, 원래 그렇다는 말씀이군요. IDE나 컴터 문제인줄 알고 긴장했는데...휴...감사합니다. | 21.12.09 00:18 | |

(IP보기클릭)58.225.***.***

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

(IP보기클릭)59.16.***.***

루리웹-7189813554
내 방도 못 치우는데..ㅎㅎ 답변 감사드립니다. | 21.12.09 00:53 | |

(IP보기클릭)58.29.***.***

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

(IP보기클릭)59.16.***.***

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

(IP보기클릭)211.106.***.***

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

(IP보기클릭)59.16.***.***

와일드다운
역시, 학원에 다녀야 할까요. 교제에 나온 순서대로 하고있기는 한데..고민해봐야 겠네요. | 21.12.09 00:51 | |

(IP보기클릭)112.187.***.***

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

(IP보기클릭)59.16.***.***

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

(IP보기클릭)61.255.***.***

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

(IP보기클릭)59.16.***.***

이피님
몰랐네요T..T 감사드립니다. | 21.12.09 01:15 | |

(IP보기클릭)39.7.***.***

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

(IP보기클릭)39.7.***.***

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

(IP보기클릭)39.7.***.***

루리웹-1959315931
비슷한 문제로 malloc이나 new로 동적할당 하고서 안의 내용을 memset 안해주면 대참사가 일어나는 경우도 있죠. | 21.12.09 09:03 | |

(IP보기클릭)1.255.***.***

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

(IP보기클릭)118.235.***.***

다산=파산교주
감사합니다. ;,하고 같이 버릇들여야 겠네요 | 21.12.09 17:32 | |

(IP보기클릭)210.107.***.***

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

(IP보기클릭)117.52.***.***

오잇스
컴퓨터 입장에서 코드를 바라보는 게 필요하군요..-..- 답변 감사드립니다. | 21.12.09 12:56 | |

(IP보기클릭)210.107.***.***

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

(IP보기클릭)211.106.***.***

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

(IP보기클릭)220.117.***.***

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


1
 댓글





읽을거리
[PS5] 국산 게임의 별로서 기억될 칼, 스텔라 블레이드 (101)
[MULTI] 탐험으로 가득한 사막과 맛있는 메카 전투, 샌드랜드 (21)
[MULTI] 아쉬움 남긴 과거에 보내는 마침표, 백영웅전 리뷰 (45)
[MULTI] 고전 명작 호러의 아쉬운 귀환, 얼론 인 더 다크 리메이크 (17)
[게임툰] 자신만의 용을 찾는 여행, 드래곤즈 도그마 2 (50)
[게임툰] 공주의 변신은 무죄, 프린세스 피치 Showtime! (34)
[NS] 창세기전: 회색의 잔영, 기념사업의 끝 (157)
[MULTI] 개발 편의적 발상이 모든 것을 쥐고 비틀고 흔든다, 별이되어라2 (88)
[NS] 여아들을 위한 감성 영웅담, 프린세스 피치 Showtime! (49)
[게임툰] 해방군은 왜 여자 뿐이냐? 유니콘 오버로드 (126)
[MULTI] 진정한 코옵으로 돌아온 형제, 브라더스: 두 아들의 이야기 RE (12)
[MULTI] 모험의 과정이 각별한 경험으로 맺어질 때, 드래곤즈 도그마 2 (52)



글쓰기
공지
스킨
ID 구분 제목 글쓴이 추천 조회 날짜
118 전체공지 업데이트 내역 / 버튜버 방송 일정 8[RULIWEB] 2023.08.08
143 공지 게시판 이용자 프로그래밍 언어 설문 조사! (2차 설문 20/04/30~... (3) _ 식봉이는 식봉해 3 1500 2021.03.24
3 공지 [공지]프로그래밍 & 코딩 게시판 입니다. _ 식봉이는 식봉해 4 1936 2021.03.10
[질문] MySql 데이터 import 질문좀 드려요. (7)
[질문] 이차방정식 코드 질문드립니다..!! (1)
[질문] termux 다시 질문드려요 (1)
[잡담] 감사합니다. 성공했어요T..T (4)
[질문] C에서 함수의 발동(?)시점과 조건 (17)
[질문] 제 1회 프게 키보드 취향 조사 (9)
[잡담] 답변주신 분들 모두 감사합니다. (1)
[강좌] JetBrain 무료강의 소개 (1)
[질문] calloc 함수를 이용한 메모리 할당 (11)
[잡담] 책 산거 인증 (5)
[질문] 코드블럭 C 잼민이 입니다. (9)
글쓰기 69개의 글이 있습니다.
1 2 3
게시판 매니저
X