작성
·
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 에 아무 값도 없는데 같은지 비교를 해야하기 때문에 초기화 하라는 에러 메세지가 발생한 것이에요!
= 로 고쳐주시면 에러 안나실거에요!
덧붙여서 위와 같이 초기화 되지 않은 변수 값으로 '연산을 시도'하려고 하는 것은 치명적인 에러이기 때문에.. 대입만 받을 변수가 아닌 이상 기본적으로 초기화 해놓는게 안전하고 좋긴 한 것 같아요 : )