인프런 커뮤니티 질문&답변

sem50000님의 프로필 이미지
sem50000

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.7 논리 연산자 Logical operators

에러 발생

작성

·

183

0

error C4700: 초기화되지 않은 'ch' 지역 변수를 사용했습니다.

// 제 코드입니다(메인 함수 안쪽 부분입니다)

char ch;

int count = 0;

while ((ch == getchar()) != PERIOD)

{

if (ch != '\n' && ch != ' ')

{

count++;

}

}

printf("%d\n", count);

계속 while문 부분에서 에러가 뜨네요... 

변수를 선언하면 꼭 초기화를 해야 하나요??

그리고 무엇으로 초기화를 해야 하나요??

ch에 NULL값이나 0을 집어넣으면 결과가 달라집니다..

답변 1

2

지금 에러나신 이유는 ch 초기화를 안해서라기보단 ch == getchar()) != PERIOD 로 작성하셔서 그런 것입니다.

== 가 아닌 = 로 쓰셔야 해요! == 로 쓰신게 근본적인 원인입니다.

= 를 2 개로 쓰셔서 == 같냐 같지 않냐의 비교 연산자가 되는 바람에 ch 와 getchar() 리턴 값이 같냐는 연산이 되어 버렸습니다. 근데 ch 를 초기화 안해주셔서 ch 에 아무 값도 없는데 같은지 비교를 해야하기 때문에 초기화 하라는 에러 메세지가 발생한 것이에요! 

= 로 고쳐주시면 에러 안나실거에요!

덧붙여서 위와 같이 초기화 되지 않은 변수 값으로 '연산을 시도'하려고 하는 것은 치명적인 에러이기 때문에.. 대입만 받을 변수가 아닌 이상 기본적으로 초기화 해놓는게 안전하고 좋긴 한 것 같아요 : )

sem50000님의 프로필 이미지
sem50000

작성한 질문수

질문하기