개발자 데뷔!

[C/C++ 2.10] ASCII(아스키 코드) 와 형변환(casting) 본문

프로그래밍 언어/C

[C/C++ 2.10] ASCII(아스키 코드) 와 형변환(casting)

물꼮이 2022. 3. 15. 21:53

아스키코드 사용

char one = 'A';
char two = '65';

cout << one;		// 출력 : A
cout << two;		// 출력 : A
cout << int(one);	// 출력 : 65

// 계산식을 거치면 int형으로 변환됨
cout << one - two;	// 출력 : 0 (두 문자 사이의 간격)

// 다른 type 변수에 저장하면 해당 type으로 바뀜
int ONE;
ONE = one;	

cout << ONE;		// 출력 : 65

 

* 두 char 타입을 아스키계산 하게 되면, int형으로 변환되어 출력된다. 

  즉, 아스키 연산 후에는 반드시 char() 로 묶어 캐스팅 해줘야 문자로 출력된다. 

캐스팅

 - 변수 앞쪽에 변환하고 싶은 type을 붙여주면 

   type 이 변환된다!! ( = casting 된다)

char a;

// type casting
cout << int(a);
cout << (int)(a);

 


대/소문자 범위

- 대문자 'A'의 ASCII코드

    65 

- 대문자 ASCII 범위

if (a>='A'&& a<='Z'){  }

// 또는

if (a >= 65 && a <= 90){  }

- 소문자 ASCII 범위

if (a>='a'&& a<='z'){  }

// 또는

if (a >= 97 && a <= 122){  }

 

대/소문자 변환

- 대문자 → 소문자

     문자 +32

char ch;
cin >> ch;

cout << char(ch - 'A' + 'a');

- 소문자 → 대문자

     문자 -32

char ch;
cin >> ch;

cout << char(ch - 'a' + 'A');

 

대/소문자 순환

- 대문자 순환

for (char i = 'A'; i <= 'Z'; i++) {		// i의 type을 char로 설정하는 것이 중요	
	cout << i;
}

// 또는
for (char i = 65; i <= 90; i++) {		
	cout << i;
}

 


문자'0'의 ASCII CODE

 - 문자 '0'의 ASCII 코드 

    = 48

 

* char 숫자 → int 숫자 

 char 로 받은 숫자를 → 같은 int 숫자 로 바꾸는 법!!

int main() {
	char a;
	cin >> a;

	// 입력받은 문자 a 가 숫자라면, 
	if (a >= '0' && a <= '9') {		// a == '0' 일때, 
		//cout << (int(a)) + 5;		// 출력 : 52
		cout << (int(a)) - 48 + 5;	// 출력 : 0
        					// 왜냐하면 int(a)는, a='0'의 ASCII 코드값  
	}
	return 0;
}

 

 

 


예제

알파벳 ASCII 범위 넘어서면, 다시 알파벳으로 순환하도록 함

//5번
int main() {								// 이거 문자열 총정리 할 때 꼭 넣어서 정리 !!!!!
	char a;
	cin >> a;
	for (char i = a - 3; i <= a + 3; i++) {		// 알파벳 아스키 범위 넘어가면 다시 알파벳으로 순환하게 만든 코드 !!!!
		if (i < 'A') {
			cout << char(i + ('Z' - 'A') + 1);
		}
		else if (i > 'Z')
			cout << char(i - ('Z' - 'A') - 1);
		else
			cout << i;
	}
	return 0;
}