본문 바로가기
Language/C++

[자료형] char 자료형으로 for 반복문을 실행하면 어떻게 될까?

by W00gie 2021. 10. 26.

일반적인 for문의 사용은 다음과 같이 int형 변수를 초기화하여 사용한다.

int main() {

	for (int i = 0; i < 250; i++) {
		cout << i << endl;
	}

	return 0;
}

 

int 대신 char형을 사용하면 어떻게될까?

char형은 문자형인데 문자에 ++연산을 하는게 가능할까?

 

int main() {
	//char형 변수로 반복문 수행
	for (char ch = 0; ch < 250; ch++) {
		cout << ch << endl;
	}
	return 0;
}

 

정답은 '가능하다' 이다.

char형은 ASCII코드로 대응되어 문자로 변환되지만, 본질은 1바이트의 변수라는 사실을 기억해야한다.

int형은 4바이트 자료형으로서 -2,147,483,648 ~ 2,147,483,647 범위를 표현할 수 있고

char형은 1바이트 자료형으로서 -128 ~ 127 의 범위를 표현할 수 있다.

 

이러한 표현범위는 for문의 ++후위연산자에도 동일하게 적용되어

0부터 1씩 지속적으로 증가한다.

 

 

int main() {
	//char형 변수로 반복문 수행
	for (char ch = 0; ch < 250; ch++) {
		cout << ch << endl;
	}
	return 0;
}

그럼 위의 for문을 실행하면 어떤 결과가 나올까?

결과는 '무한루프'에 빠진다.

char형으로 나타낼 수 있는 범위는 최대 127까지인데 위의 for문에서는 250까지의 조건식을 기재하였다.

127을 넘어서는 순간 다시 -128로 오버플로우되는 과정이 반복된다.

 

int main() {
	//char형 변수로 반복문 수행
	for (char ch = 0; ch < 127; ch++) {
		cout << ch << endl;
	}
	return 0;
}

char 자료형 범위내에서 수행할 수 있는 조건식이(ch<127) 주어지는 경우 정상적으로 for문이 작동한다.