20140312 (리터럴 상수, 접미사, 아스키코드, 캐스팅, 서식문자, 특수문자)
18일차
----------------------
리터럴(Literal) 상수
----------------------
- 변수가 아닌 것 상수를 리터럴 상수라 함.
ex) int iNum = 3; // 여기서 3이 리터럴 상수.
- int형으로 저장 가능한 것은 int형으로 약속하고
- double형으로 저장 가능한 것은 double형으로 저장하기로 약속했다.
----------------
접 미 사
----------------
- (리터럴) 상수 뒤에 써주는 것으로 상수의 자료형을 바꿀 수 있음.
확인 예제 소스
#include <stdio.h>
int main()
{
printf("3 \t: %d \n", sizeof 3);
printf("3LL \t: %d \n", sizeof 3LL);
printf("3.14 \t: %d \n", sizeof 3.14);
printf("3.14F \t: %d \n", sizeof 3.14F);
return 0;
}
출력 화면
---------------------
아스키코드 (ASCII)
---------------------
- 영문자를 표기하기 위해 아스키코드 표를 만들어 그에 상응하는
숫자를 글자 형태로 출력시 영문자가 출력된다.
예제 소스코드
#include <stdio.h>
int main()
{
char cCh1 = 'A';
char cCh2 = 65;
char cCh3 = 'Z';
char cCh4 = 90;
printf("%c %d \n", cCh1, cCh1);
printf("%c %d \n", cCh2, cCh2);
printf("%c %d \n", cCh3, cCh3);
printf("%c %d \n", cCh4, cCh4);
return 0;
}
출력 화면
따라서 문자도 컴퓨터 내에선 숫자로 취급한다.
- 0부터 31까지는 제어문자
- 65 = 'A' - 90 = 'Z' - 97 = 'a' - 122 = 'z'
- 문자열이 아닌 문자 하나만 쓸 경우 char 형 말고 int 형으로 쓰는 것이
더 빠르다. 왜냐하면
-------------------
캐 스 팅 Casting
-------------------
- 묵시적 형변환
컴파일러가 어떠한 언급도 없이 형변환
두 가지로 나뉜다.
- down casting(하향식 형변환)
서로 크기가 안 맞을 경우 맞지 않는 부분 만큼 버림.
ex)
int iNum;
char cNum;
iNum = 257.9;
cNum = iNum;
이와 같이 소스를 짜면 iNum에는 257, cNum에는 1이 들어간다.
iNum에서는 뒤에 소수를 버리고 cNum은 257이 이진수로 1 0000 0001인데
1byte만 가져가므로 0000 0001 만 들어감.
- up casting(상향식 형변환)
데이터의 손실을 막기 위해 범위가 더 큰쪽으로 맞춘다.
ex)
dNum = 1 + 1.4;
1도 double형으로 바뀌어 1.4와 연산되어 dNum에 들어간다.
- 명시적 형변환
프로그래머가 알려서 바뀌는 것
ex)
int iNum1 = 3;
int iNum2 = 4;
double dNum;
dNum = (double)iNum1 / iNum2;
() 괄호는 casting 연산자라 부르고
결국 iNum1이 double형으로 승격하고
묵시적 변환으로 iNum2도 double형으로 승격되어 계산됨.
---------------------------
printf 서식 문자와 특수 문자
---------------------------
추가로 %출력은 %%이다.