제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영
순서 데이터의 형태 분류 상수형 변수형 변수형 선언과 형의 변환 산술, 관계, 논리 연산자 기타 연산자 연산의 순서 요약 제 3장 데이터형과 연산자 데이터의 형태 분류 상수형 변수형 변수형 선언과 형의 변환 산술, 관계, 논리 연산자 기타 연산자 연산의 순서 요약
데이터의 형태 분류 데이터의 형태 상수(constant) 데이터를 직접 기술하는 것 변수(variable) 제 3장 데이터형과 연산자 데이터의 형태 상수(constant) 데이터를 직접 기술하는 것 변수(variable) 상수를 기억하여 간접적으로 사용되는 형태 배열형 데이터 포인터형 데이터 구조체형 데이터 열거형 데이터
상수형 제 3장 데이터형과 연산자 상수형의 분류
상수형 정수형 상수 정수는 보통 10진수로 표현 8진수인 경우는 `0'으로 시작 제 3장 데이터형과 연산자 정수형 상수 정수는 보통 10진수로 표현 8진수인 경우는 `0'으로 시작 16진수인 경우는 `0x' 또는 `0X'로 시작 16진수는 0-9와 A, B, C, D, E, F를 사용 정수 표기의 예
상수형 정수형 상수 정수형 상수의 형은 보통 프로그램 내에서 상수가 대입되는 변수의 형에 따라 결정 제 3장 데이터형과 연산자 정수형 상수 정수형 상수의 형은 보통 프로그램 내에서 상수가 대입되는 변수의 형에 따라 결정 필요한 경우에는 상수가 메모리 내에서 차지하는 크기나 부호표시의 여부를 직접 정해줄 수 있음 정수형 상수의 데이터 형태 정수형을 부호 없이 양의 값만으로 쓰고 싶은 경우는 정수형 상수 끝에 `U'나 `u'자를 첨가 정수형 상수 값의 범위를 크게 하고 싶으면, 정수형 상수의 끝에 `L'나 `l'을 첨가
상수형 실수형 상수 정수가 아닌 소수를 나타내는 상수 고정소수점 방식은 소수점을 사용하여 정수부와 실수부를 구분하는 방식 제 3장 데이터형과 연산자 실수형 상수 정수가 아닌 소수를 나타내는 상수 고정소수점 방식은 소수점을 사용하여 정수부와 실수부를 구분하는 방식 부동 소수점 방식은 소수점을 쓰기는 하지만, 그 위치를 첫 번째 숫자 뒤로 한정시키는 방법 사용예
상수형 실수형 상수 문자 상수 실수형 상수의 크기는 정수형 상수에서처럼 그 상수가 대입되는 변수의 크기에 따라 결정됨 제 3장 데이터형과 연산자 실수형 상수 실수형 상수의 크기는 정수형 상수에서처럼 그 상수가 대입되는 변수의 크기에 따라 결정됨 직접 실수형 상수의 크기를 정해주고 싶으면 상수의 뒤에 첨자를 붙임 실수형 상수의 뒤에 `f'나 `F'를 붙이면 상수는 크기가 4바이트인 float형태 `l'이나 `L'을 덧붙이면 크기가 8바이트인 double형태 문자 상수 하나의 문자로 구성된 상수 문자 상수는 `a'와 같이 작은따옴표로 표현 특수 제어 문자의 종류와 용도
상수형 제 3장 데이터형과 연산자
상수형 문자열 상수 문자열(string)이란 문자들이 모여 있는 것으로 다수의 문자를 출력하거나 처리할 때에 쓰임 제 3장 데이터형과 연산자 문자열 상수 문자열(string)이란 문자들이 모여 있는 것으로 다수의 문자를 출력하거나 처리할 때에 쓰임 [예제 3-1] #include <stdio.h> void main() { printf("Hello, everybody\n"); printf("Goodbye, everybody\n"); } [실행 결과] Hello, everybody Goodbye, everybody
변수형 개념 변수(variable)는 상수와는 달리 프로그램 수행 도중에 그 값이 바뀜 제 3장 데이터형과 연산자 개념 변수(variable)는 상수와는 달리 프로그램 수행 도중에 그 값이 바뀜 프로그램이 수행되는 도중에 그 값이 저장되어 있을 기억장소가 필요하고, 프로그램에서 그 기억장소를 억세스하기 위한 이름이 필요 변수명(variable name)은 항상 영문자로 시작되어야 하고, 32자 까지만 인식 변수는 기억되는 데이터의 형태에 따라 문자형, 정수형, 실수형 변수로 구분
변수형 제 3장 데이터형과 연산자 정수형 변수의 종류
변수형 정수형 변수 [예제 3-2] #include <stdio.h> void main() { 제 3장 데이터형과 연산자 정수형 변수 [예제 3-2] #include <stdio.h> void main() { unsigned char a,b,c; a = 'A'; b = 'B'; c = a + b; printf("%c + %c = %c\n",a,b,c); /* 문자로 취급 */ printf("%d + %d = %d\n",a,b,c); /* 정수로 취급 */ } [실행 결과] A + B = â 65 + 66 = 131
변수형 제 3장 데이터형과 연산자 실수형 변수 실수형 변수(floating variable)는 소수점 아래의 수를 포함한 자세한 계산을 하기 위한 변수로서, 변수형에 비해 사용빈도는 낮지만, 나눗셈 등의 계산에는 필수적 실수형은 메모리에 기억될 때 유효숫자와 자릿수의 형태로 기억되기 때문에 차지하는 메모리의 크기에 비례하여 수의 정밀도와 나타낼 수 있는 수의 범위가 커짐 실수형 변수의 크기와 범위
변수형 선언과 형의 변환 제 3장 데이터형과 연산자 선언 지금까지 3.3절에서 설명한 바와 같이 변수는 그 형에 따라 필요한 메모리의 크기가 달라지므로, 프로그램에서 실행 가능한 부분이 시작되기 전에 필요한 변수의 크기와 형을 정해주어서 미리 기억장소를 할당하도록 해야만 프로그램 내에서 변수를 사용할 수가 있다. 이렇게 프로그램의 앞에서 사용할 변수를 미리 밝히는 것을 선언(declaration)이라 한다 변환 선언에 의해 정해진 변수의 형은 계속해서 유지되지만, 필요에 의해 프로그램 내에서 일시적으로 바뀌어져야 할 때가 있다. 이런 경우를 형의 변환이라고 한다. 형의 변환은 컴파일러에 의해 자동적으로 이루어지기도 하지만, 필요에 따라서는 사용자가 강제적으로 변환시킬 수도 있다
변수형 선언과 형의 변환 변수형 선언 변수를 사용하는 모든 프로그램의 앞부분에는 이처럼 사용할 변수를 미리 선언해 주어야 함 제 3장 데이터형과 연산자 변수형 선언 변수를 사용하는 모든 프로그램의 앞부분에는 이처럼 사용할 변수를 미리 선언해 주어야 함 [예제 3-3] main(){ int i; /* 변수 선언부 */ char c; long a; float ratio; float total; i = 0; j = 10000; c = 'Z'; a = 1; ratio = 0.5; }
변수형 선언과 형의 변환 변수형 선언 [예제 3-4] main() { int i = 0, j = 10000; 제 3장 데이터형과 연산자 변수형 선언 [예제 3-4] main() { int i = 0, j = 10000; char c = 'Z'; long a; float rate = 0.5, total; . }
변수형 선언과 형의 변환 형의 변환 정해진 데이터의 형이 프로그램 수행도중에 바뀌어지는 것 [예제 3-5] 제 3장 데이터형과 연산자 형의 변환 정해진 데이터의 형이 프로그램 수행도중에 바뀌어지는 것 [예제 3-5] #include<stdio.h> main() { int a = 1234; float b; b = a; /* float <= int */ printf("b = %f",b); } [실행결과] b = 1234 데이터형의 범위의 관계 char<short int<long int<float<double<long double
변수형 선언과 형의 변환 제 3장 데이터형과 연산자 형의 결정 강제적인 형의 변환은 캐스트(cast)연산자에 의해 이루어지며 캐스트 연산자의 형태는 선언문에서 쓰는 데이터형을 소괄호(`( )')안에 써주는 형태
산술, 관계, 논리 연산자 산술 연산자 각종 산술 연산에서 쓰이는 연산자 이항 연산자 제 3장 데이터형과 연산자 산술 연산자 각종 산술 연산에서 쓰이는 연산자 이항 연산자 두 항 사이의 산술 연산을 지시하는 연산자로 사칙연산과 같은 일반적인 산술식의 대부분 이항 연산자의 종류와 기능
산술, 관계, 논리 연산자 이항 연산에서의 우선 순위 `-' 단항 연산자 `*', `/', `%' 이항 연산자 제 3장 데이터형과 연산자 이항 연산에서의 우선 순위 `-' 단항 연산자 `*', `/', `%' 이항 연산자 `+', `-' 이항 연산자 예 : int a = 3, b = 8, c = -4, d = -10;
산술, 관계, 논리 연산자 산술 연산자 단항 연산자 하나의 데이터만을 대상으로 연산을 수행 제 3장 데이터형과 연산자 산술 연산자 단항 연산자 하나의 데이터만을 대상으로 연산을 수행 `+', `-'의 양수, 음수 부호 연산자 증가 연산자(increment operator) 감소 연산자(decrement operator) 선행(prefix) 연산자와 후행(postfix) 연산자 사용예 int a, b; a = 10;
산술, 관계, 논리 연산자 제 3장 데이터형과 연산자 단항 연산자의 사용 예와 결과
산술, 관계, 논리 연산자 [예제 3-5] #include <stdio.h> main() { 제 3장 데이터형과 연산자 [예제 3-5] #include <stdio.h> main() { int a = 5, b; b = ++a; printf("b = %d",b); } [예제 3-6] b = a++;
산술, 관계, 논리 연산자 산술 연산자 대입 연산자 `='는 연산자 우측의 값을 좌측의 변수에 대입한다는 의미 제 3장 데이터형과 연산자 산술 연산자 대입 연산자 `='는 연산자 우측의 값을 좌측의 변수에 대입한다는 의미 대입연산자의 종류와 기능
산술, 관계, 논리 연산자 관계 연산자 두 데이터간의 대소 및 상등을 판별하는 연산자 제 3장 데이터형과 연산자 관계 연산자 두 데이터간의 대소 및 상등을 판별하는 연산자 결과값은 연산자에 따라 참이면 1, 거짓이면 0으로 관계 연산자의 종류와 기능
산술, 관계, 논리 연산자 관계 연산자 관계연산자가 대입 연산자보다 우선 순위가 낮음 제 3장 데이터형과 연산자 관계 연산자 관계연산자가 대입 연산자보다 우선 순위가 낮음 관계 연산자의 연산 우선 순위는 산술 연산자보다 낮음 관계 연산자가 여러개 있을 경우는 왼쪽에서부터 높은 우선 순위 [예제 3-7] #include<stdio.h> main() { int i = 5, j; j = (7 < i < 10); printf("Result is %d",j); } [실행 결과] Result is 1
산술, 관계, 논리 연산자 논리 연산자 AND, OR, NOT등의 논리 연산을 수행 논리 연산자의 종류와 기능 제 3장 데이터형과 연산자 논리 연산자 AND, OR, NOT등의 논리 연산을 수행 논리 연산자의 종류와 기능
산술, 관계, 논리 연산자 논리 연산자 연산 우선 순위 예 char c = 'd'; 제 3장 데이터형과 연산자 논리 연산자 연산 우선 순위 예 char c = 'd'; int i = 10, j = 10, k = 20; float x = 3.4;
기타 연산자 비트 처리 연산자 비트 연산자는 주어진 데이터를 비트 단위에서 인식하여 연산을 수행하는 연산자 제 3장 데이터형과 연산자 비트 처리 연산자 비트 연산자는 주어진 데이터를 비트 단위에서 인식하여 연산을 수행하는 연산자 비트 연산자의 종류와기능 보수 보수(complement)는 보통 일의 보수 비트 단위에서 0은 1로, 1은 0으로 반전 보수 연산자는 단항 연산자이므로, 다른 이항 연산자에 우선
기타 연산자 비트 처리 연산자 비트 논리 연산자 논리 연산자를 비트 단위에서 행하는 것 비트 논리 연산자의 기능 제 3장 데이터형과 연산자 비트 처리 연산자 비트 논리 연산자 논리 연산자를 비트 단위에서 행하는 것 비트 논리 연산자의 기능
기타 연산자 이동 연산자 이동(shift) 연산이란 주어진 수를 비트 단위에 서 모든 비트들을 순서대로 이동시키는 것 제 3장 데이터형과 연산자 이동 연산자 이동(shift) 연산이란 주어진 수를 비트 단위에 서 모든 비트들을 순서대로 이동시키는 것 이동 연산자의 종류와 기능
기타 연산자 비트 처리 연산자 이동 연산자 실제 이동의 예 char x = 28; 제 3장 데이터형과 연산자 비트 처리 연산자 이동 연산자 실제 이동의 예 char x = 28; 간단한 정수의 곱셈을 빠르게 행할 수 있지만, 실수형에서는 가능하지 않고 부호가 있는 경우도 사용해서는 안됨
기타 연산자 조건 연산자 조건 연산의 형식 조건식 ? 연산식 1 : 연산식 2 제 3장 데이터형과 연산자 조건 연산자 조건 연산의 형식 조건식 ? 연산식 1 : 연산식 2 위의 형식에서 조건식의 값이 참(1)이면 연산식 1을 수행하여 결과값을 구하고, 조건식의 값이 거짓(0)이면 연산식 2를 수행하여 결과값을 구한다. 조건 연산자는 위의 식에서 쓰인 `?'와 `:'를 말한다. 다음의 연산식은 i와 j를 비교하여 둘이 같으면 i값에 3을 더하여 k에 대입하고, 같지 않으면 두수의 차를 구하여 k에 대입하는 연산이다. k = (i == j ? i + 3 : i - j); 같은 연산을 조건문을 써서 수행하려면 다음과 같다. if (i == j) k = i + 3; else k = i - j;
기타 연산자 제 3장 데이터형과 연산자 쉼표 연산자 쉼표 연산자(comma operator)는 연산자 `,'를 이용하여 여러 개의 연산을 순서대로 수행하는 연산자이다. 쉼표 연산자를 사용하여 나열한 연산들은 왼쪽에서부터 차례대로 수행되며, 보다 왼쪽에 있는 연산의 결과가 오른쪽에 있는 연산에 사용될 수 있다. 일반적인 형식은 다음과 같다. 연산식 1, 연산식 2, 연산식 3, …… 이 연산자를 이용하여 연산을 간단하게 표현할 수 있지만, 자칫하면 프로그램이 이해하기 힘들게 될 우려가 있으므로 주의해야 한다. 쉼표 연산자는 연산과 연산을 구분하는 연산자이므로, 모든 연산자보다 연산 우선 순위가 낮다.
기타 연산자 캐스트 연산자 데이터의 형을 원하는 데이터형으로 강제적으로 바꾸어주는 연산자 제 3장 데이터형과 연산자 캐스트 연산자 데이터의 형을 원하는 데이터형으로 강제적으로 바꾸어주는 연산자 표현할 수 있는 데이터의 범위가 작은 데이터형에서 보다 큰 데이터형으로 변환이 필요할 때에만 자동적으로 형의 변환이 일어남 캐스트 연산자는 범위가 넓은 데이터형을 작은 데이터형으로 바꾸는 것 캐스트 연산자의 형식 (데이터형) 데이터 또는 연산식 [예제 3-8] main() { int a = 50, b = 500; char c, d; c = (char) a; d = (char) b; . }
기타 연산자 제 3장 데이터형과 연산자 sizeof 연산자 sizeof 연산자는 C 언어에서 연산자로써 분류, 제공되고 있지만 실제 사용법이나 기능은 함수에 가깝다. sizeof 연산자는 식이나 데이터, 또는 데이터형을 받아서 그 데이터의 크기를 바이트 단위로 돌려준다. 사용예 char a = 3; 이 연산자는 여러 가지 다른 환경에서 사용되는 프로그램에서 각 데이터형이 갖는 메모리 크기를 확인할 때 사용되거나, 뒤에서 나올 구조체 등을 사용할 때 사용되는 메모리 크기를 알고 싶을 때도 사용될 수 있다.
연산의 순서 연산의 기본원칙 연산자의 우선 순위 ( ) 안의 내용이 먼저 수행됨 단항 연산자가 이항 연산자보다 먼저 수행됨 제 3장 데이터형과 연산자 연산의 기본원칙 ( ) 안의 내용이 먼저 수행됨 단항 연산자가 이항 연산자보다 먼저 수행됨 왼쪽에서 오른쪽으로 수행됨 연산자의 우선 순위 위의 원칙에 예외 존재 주어진 우선 순위에 따라도 순서가 불분명한 경우는 반드시 괄호를 사용하여 우선 순위를 표시해 주는 것이 좋음
연산의 순서 제 3장 데이터형과 연산자