일반적인 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문이 작동한다.
'Language > C++' 카테고리의 다른 글
lvalue와 rvalue + 우측값 참조법 (0) | 2021.12.21 |
---|---|
스마트 포인터 (Smart Pointer) (0) | 2021.12.17 |
Sort 함수의 커스터마이징, 특정 조건 정렬 (0) | 2021.10.04 |
PS에 필요한 String 컨테이너 기본 지식 (0) | 2021.09.09 |
C++의 캐스팅 연산자 (0) | 2021.03.25 |