윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형
Chapter 05-1. C언어가 제공하는 기본 자료형의 이해 윤성우의 열혈 C 프로그래밍 Chapter 05-1. C언어가 제공하는 기본 자료형의 이해 윤성우 저 열혈강의 C 프로그래밍 개정판
자료형은 데이터를 표현하는 방법입니다. 윤성우의 열혈 C 프로그래밍 int num; 실수를 저장할 것이냐? 정수를 저장할 것이냐! ∙ 값을 저장하는 방식이 실수냐 정수냐에 따라서 달라지기 때문에 용도를 결정해야 한다. 얼마나 큰 수를 저장할 것이냐! ∙ 큰 수를 표현하기 위해서는 많은 수의 바이트가 필요하다. 이름 이외에 메모리 공간의 할당에 있어서 필요한 두 가지 정보 요청의 예 제대로 된 요청 "아! 제가 정수를 저장할건데요. 크기는 4바이트로 하려고 합니다. 그 정도면 충분할거에요. 그리고 변수의 이름은 num으로 할게요.." C언어에서의 예 int num; 동일한 요청 자료형의 수는 데이터 표현방법의 수를 뜻한다. C언어가 제공하는 기본 자료형의 수가 10개라면, C언어가 제공하는 기본적인 데이터 표현방식의 수는 10개라는 뜻이 된다.
기본 자료형의 종류와 데이터의 표현범위 윤성우의 열혈 C 프로그래밍 ∙ 컴파일러에 따라서 약간의 차이를 보인다. ∙ 크게 정수형과 실수형으로 나뉘다. 데이터를 표현하는 방식이 정수형과 실수형 두 가지로 나뉘므로! ∙ 정수형에도 실수형에도 둘 이상의 기본 자료형이 존재한다. 표현하고자 하는 값의 크기에 따라서 적절히 선택할 수 있도록 다수의 자료형이 제공!
연산자 sizeof를 이용한 바이트 크기의 확인 윤성우의 열혈 C 프로그래밍 연산자 sizeof를 이용한 바이트 크기의 확인 변수 num과 int의 크기를 계산하여 그 결과로 sz1과 sz2를 초기화 sizeof 연산자의 피연산자로는 변수, 상수 및 자료형의 이름 등이 올 수 있다. 소괄호는 int와 같은 자료형의 이름에만 필수! 하지만 모든 피연산자를 대상으로 소괄호를 감싸주는 것이 일반적! 실행결과
정수의 표현 및 처리를 위한 일반적 자료형 선택 윤성우의 열혈 C 프로그래밍 실행결과 ∙ 일반적인 선택은 int이다. CPU가 연산하기에 가장 적합한 데이터의 크기가 int형의 크기로 결정된다. 연산이 동반이 되면 int형으로 형 변환이 되어서 연산이 진행된다. 따라서 연산을 동반하는 변수의 선언을 위해서는 int로 선언하는 것이 적합히다. ∙ char형 short형 변수는 불필요한가? 연산을 수반하지 않으면서(최소한의 연산만 요구가 되면서) 많은 수의 데이터를 저장해야 한다면, 그리고 그 데이터의 크기가 char 또는 short로 충분히 표현 가능하다면, char 또는 short 로 데이터를 표현 및 저장하는 것이 적절하다. + 연산결과의 크기가 4바이트인 이유는 피연산자가 4바이트 데이터로 형 변환 되었기 때문이다. 실행결과
실수의 표현 및 처리를 위한 일반적 자료형 선택 윤성우의 열혈 C 프로그래밍 실행결과 ∙ 실수 자료형의 선택기준은 정밀도 실수의 표현범위는 float, double 둘 다 충분히 넓다. 그러나 8바이트 크기의 double이 float보다 더 정밀하게 실수를 표현한다. ∙ 일반적인 선택은 double이다. 컴퓨팅 환경의 발전으로 double형 데이터의 표현 및 연산이 덜 부담스럽다. float형 데이터의 정밀도는 부족한 경우가 많다. double형 변수의 출력 서식문자 %f - printf double형 변수의 입력 서식문자 %lf - scanf 실행결과
unsigned를 붙여서 0과 양의 정수만 표현 윤성우의 열혈 C 프로그래밍 unsigned를 붙여서 0과 양의 정수만 표현 ∙ 정수 자료형의 이름 앞에는 unsigned 선언을 붙일 수 있다. ∙ unsigned가 붙으면, MSB도 데이터의 크기를 표현하는데 사용이 된다. ∙ 따라서 표현하는 값의 범위가 양의 정수로 제한이 되며 양의 정수로 두 배 늘어난다.
Chapter 05-2. 문자의 표현방식과 문자를 위한 자료형 윤성우의 열혈 C 프로그래밍 Chapter 05-2. 문자의 표현방식과 문자를 위한 자료형 윤성우 저 열혈강의 C 프로그래밍 개정판
문자의 표현을 위한 약속! 아스키(ASCII) 코드! 윤성우의 열혈 C 프로그래밍 문자의 표현을 위한 약속! 아스키(ASCII) 코드! 미국 표준 협회(ANSI: American National Standards Instute)’ 에 의해서 제정된 ‘아스키(ASCII: Amerian Standard Code for Information Interchange) 코드’ 컴퓨터는 문자를 표현 및 저장하지 못한다. 따라서 문자를 표현을 목적으로 각 문자에 고유한 숫자를 지정한다. 인간이 입력하는 문자는 해당 문자의 숫자로 변환이 되어 컴퓨터에 저장 및 인식이 되고, 컴퓨터에 저장된 숫자는 문자로 변환이 되어 인간의 눈에 보여지게 된다. 컴파일 시 각 문자는 해당 아스키 코드 값으로 변환 따라서 실제로 컴퓨터에게 전달되는 데이터는 문자가 아닌 숫자이다. C 프로그램상에서 문자는 작은 따옴표로 묶어서 표현
문자는 이렇게 표현되는 거구나! 윤성우의 열혈 C 프로그래밍 실행결과 서식문자 %c 해당 숫자의 아스키 코드 문자를 출력해라! ∙ 문자를 char형 변수에 저장하는 이유 모든 아스키 코드 문자는 1바이트로도 충분히 표현가능 문자는 덧셈, 뺄셈과 같은 연산을 동반하지 않는다. 단지 표현에 사용될 뿐이다. 따라서 1바이트 크기인 char형 변수가 문자를 저장하기 최적의 장소이다. 문자는 int형 변수에도 저장이 가능하다.
윤성우의 열혈 C 프로그래밍 Chapter 05-3. 상수에 대한 이해 윤성우 저 열혈강의 C 프로그래밍 개정판
이름을 지니지 않는 리터럴 상수! 윤성우의 열혈 C 프로그래밍 연산을 위해서는 30, 40과 같이 프로그램상에 표현되는 숫자도 메모리 공간에 저장되어야 한다. 이렇게 저장되는 값은 이름이 존재하지 않으니 변경이 불가능한 상수이다. 따라서 리터럴 상수라 한다. 메모리 공간에 저장이 되어야 CPU의 연산대상이 된다.
리터럴 상수의 자료형 윤성우의 열혈 C 프로그래밍 실행결과 리터럴 상수도 자료형이 결정되어야 메모리 공간에 저장이 될 수 있다. 위 예제의 실행결과는 다음 사실을 의미한다. ∙ 정수는 기본적으로 int형으로 표현된다. ∙ 실수는 기본적으로 double형으로 표현된다. ∙ 문자는 기본적으로 int형으로 표현된다.
접미사를 이용한 다양한 상수의 표현 윤성우의 열혈 C 프로그래밍 실수는 double형 상수로 인식이 되어 데이터 손실에 대한 경고 메시지 발생 접미사를 통해서 상수의 자료형을 변경할 수 있다.
이름을 지니는 심볼릭(Symbolic) 상수: const 상수 윤성우의 열혈 C 프로그래밍 이름을 지니는 심볼릭(Symbolic) 상수: const 상수 상수의 이름은 모두 대문자로 표시하고, 둘 이상의 단어를 연결할 때에는 MY_AGE와 같이 언더바를 이용해서 두 단어를 구분하는 것이 관례!
윤성우의 열혈 C 프로그래밍 Chapter 05-4. 자료형의 변환 윤성우 저 열혈강의 C 프로그래밍 개정판
대입 연산의 과정에서 발생하는 자동 형 변환 윤성우의 열혈 C 프로그래밍 대입 연산자의 왼편을 기준으로 형 변환이 발생한다. 정수 245는 245.0의 비트 열로 재구성이 되어 변수 num1에 저장된다. 실수 3.1415는 int형 데이터 3의 비트 열로 재구성이 되어 변수 num2에 저장된다. 4바이트 변수 num3에 저장된 4바이트 데이터 중 상위 3바이트가 손실되어 변수 ch에 저장된다. 00000000 00000000 00000000 10000001 10000001
자동 형 변환의 방식 정리 윤성우의 열혈 C 프로그래밍 실행결과 형 변환의 방식에 대한 유형별 정리 ∙ 정수를 실수로 형 변환 3은 3.0으로 5는 5.0으로(오차가 발생하게 된다). ∙ 실수를 정수로 형 변환 소수점 이하의 값이 소멸된다. ∙ 큰 정수를 작은 정수로 형 변환 작은 정수의 크기에 맞춰서 상위 바이트가 소멸된다. 실행결과
정수의 승격에 의한 자동 형 변환 윤성우의 열혈 C 프로그래밍 일반적으로 CPU가 처리하기에 가장 적합한 크기의 정수 자료형을 int로 정의한다. 따라서 int형 연산의 속도가 다른 자료형의 연산속도에 비해서 동일하거나 더 빠르다. 따라서 다음과 같은 방식의 형 변환 발생 이를 가리켜 ‘정수의 승격(Integral Promotion)’이라 한다.
피연산자의 자료형 불일치로 발생하는 자동 형 변환 윤성우의 열혈 C 프로그래밍 피연산자의 자료형 불일치로 발생하는 자동 형 변환 두 피연산자의 자료형은 일치해야 한다. 일치하지 않으면 일치하기 위해서 자동으로 형 변환이 발생한다. double num1 = 5.15 + 19; 아래의 자동 형 변환 규칙을 근거로 int형 데이터 19가 double형 데이터 19.0으로 형 변환이 되어 덧셈이 진행된다. 산술연산에서의 자동 형 변환 규칙 바이트 크기가 큰 자료형이 우선시 된다. 정수형보다 실수형을 우선시 한다. 이는 데이터의 손실을 최소화 하기 위한 기준이다.
명시적 형 변환: 강제로 일으키는 형 변환 윤성우의 열혈 C 프로그래밍 실행결과 추천하는 코드 작성 스타일 num1과 num2가 정수이기 때문에 몫만 반환이 되는 정수형 나눗셈이 진행 실행결과 divResult = (double)num1 / num2; (type)은 type형으로의 형 변환을 의미한다. num1이 double형으로 명시적 형 변환 그리고 num1과 num2의 / 연산 과정에서의 산술적 자동 형 변환! 그 결과 실수형 나눗셈이 진행되어 divResult에는 0.75가 저장된다. 자동 형 변환이 발생하는 위치에 명시적 형 변환 표시를 해서 형 변환이 발생함을 알리는 것이 좋다! 추천하는 코드 작성 스타일
Chapter 05가 끝났습니다. 질문 있으신지요?