복습
C의 기본 정수형의 범위 예(Microsoft Visual C/C++ 6.0) 크게 4개의 정수형 char, short, int, long 자료형 기억장소 최소값 최대값 char 8 비트 -27 = -128 27-1 = 127 short 16 비트 -215 = -32,768 215-1 = 32,767 int 32 비트 -231 = -2,147,483,648 231-1 = 2,147,483,647 long long long* 64 비트 -264 = -9,223,372,036,854,775,808 263-1 = 9,223,372,036,854,775,807 * long long은 MS Visual C/C++ 6.0에서는 지원되지 않음. 여기서 long long은 gcc 컴파일러의 예 C의 기본 정수형의 범위 예(Microsoft Visual C/C++ 6.0) © 우균, 창병모
부동소수형의 예(Microsoft Visual C/C++ 6.0) float, double, long double 부동소수점(floating-point)이란? 부동소수점에서 점(point)은 소수점을 말하며, 이 소수점이 수의 어느 위치에도 올 수 있으므로 부동소수점이라고 한다. 자료형 기억장소 최소값 최대값 float 4 바이트 7개의 유효숫자를 가지며, -1.0E+38의 근사값 7개의 유효숫자를 가지며, 1.0E+38의 근사값 double 8 바이트 15개의 유효숫자를 가지며, -1.0E+308의 근사값 15개의 유효숫자를 가지며, 1.0E+308의 근사값 long double 부동소수형의 예(Microsoft Visual C/C++ 6.0) © 우균, 창병모
문자형 각 문자에 고유번호를 부여한 코드를 사용하여 표현한다. C에서는 ASCII 코드를 사용한다. ASCII(American Standard Code for Information Interchange) 128개의 문자를 7 비트를 사용하여 표현(8비트로 확장됨) 대문자(A, B, C 등등) 소문자(a, b, c 등등) 구두점(punctuation)(마침표, 세미콜론, 쉼표 등등) 숫자(digit)(0에서 9까지) 공백 문자(‘ ’) 특수 문자(&, |, \ 등) 제어 문자 열복귀(carriage return), 널(null), 문서-끝-표시자(end-of-text) 액센트(accent)가 있는 문자 © 우균, 창병모
표준 라이브러리 라이브러리(library) 표준 라이브러리(standard library) 미리 작성해 둔 프로그램 표준 라이브러리(standard library) 컴퓨터 시스템이 달라도 같은 기능(same functionality)을 같은 방식(same interface)으로 사용할 수 있도록 작성해 둔 라이브러리 표준입출력 라이브러리(standard input/output library) 표준입출력을 다루는 프로그램(함수) 집합
printf 포맷 스트링 EX) int a = 100; printf(“%d”, a);
scanf 포맷 스트링 EX) float a; scanf(“%f”, &a); TIP: double 타입으로 입력 받아야 할 경우에는 %f 대신 %lf를 사용한다.
getchar, putchar: 문자 입출력 표준입력 putchar 'A' 문자 .....A 표준출력 대문자로 변환하는 함수 toupper() 실행결과: 소문자를 입력하세요. a a의 대문자는 A입니다. 안내문구(prompt) putchar가 출력한 문자들
gets, puts: 줄 단위 입출력 C99에서는 const int로 배열 크기 선언이 가능함 실행결과: 사용자가 입력한 \n puts가 출력한 \n line에는 여기까지만 저장됨(\n은 제외됨)
산술 연산자 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 연산 정수형과 부동소수형에 대해서 가능 연산 피연산자 자료형 결과 값 단항 플러스 +a 정수형, 부동소수형 a의 값 그대로 단항 마이너스 -a a의 부호를 변경한 값 덧셈 a + b a와 b의 합 뺄셈 a - b a에서 b를 뺀 값 곱셈 a * b a와 b의 곱 나눗셈 a / b 정수형 a를 b로 나눈 몫 부동소수형 a를 b로 나눈 값 나머지 a % b a를 b로 나눈 나머지 © 우균, 창병모
▶ 프로그래밍 실습 3 원의 넓이를 구하는 프로그램을 작성하세요 파이 * 반지름제곱 파이를 #define 문으로 지정할 것 소수점
scanf가 없다면 왜 불편하나요? 문자만 입력받는 gets만 있다면?? 숙달된 조교님의 시범이 있겠습니다….
실습 준비
연산자 우선순위 연산자 우선순위 괄호를 이용한 연산 순서 조정 한 수식 내에서 연산자의 계산 순서 수식을 계산할 때 괄호로 묶인 수식은 먼저 수행된다. (fahrenheit - BASE) * 5.0 / 9.0 vs fahrenheit - BASE * 5.0 / 9.0 우선순위 연산자 1순위 단항 + 단항 - 2순위 * / % 3순위 + - © 우균, 창병모
결합순서(associativity) 좌우선 결합(left associative) 우우선 결합(right associative) 우선순위가 같은 이항 산술연산자들은 좌측에서 우측 순서로 계산한다 예 a / b * c (a / b) * c 우우선 결합(right associative) 단항 산술연산자는 우측에서 좌측 순서로 계산한다 - + - a - (+ (- a)) © 우균, 창병모
확장 변환(widening conversion) 자료형의 값을 저장하는 데 필요한 기억장소의 크기가 같거나 큰 다른 자료형으로 변환 char(1) < short(2) < int(4) ≤ long(4) ≤ float(4) < double(8) ≤ long double(8) 수식에서 여러 타입이 사용되면 자동 확장 변환이 일어난다. 확장 변환 예 : won, rate가 float로 변환 int won, rate = 960; float dollar; won = dollar * rate; © 우균, 창병모
대입 변환(assignment conversion) 어떤 형의 값이 다른 형의 변수에 대입될 때 자동적으로 일어나며, 이 과정에서 값이 대입될 변수 형으로 자동 변환된다. 예 dollar = won / rate; won / rate 값이 36이면, 부동소수점 값 36.0으로 변환 후 dollar에 대입 축소 변환(narrowing conversion) won = dollar * rate; 소숫점 이하 값은 버리고 정수 값만 대입한다. 축소 변환은 정보를 손실시키므로 주의! © 우균, 창병모
명시적 형 변환 예 달러를 원으로 변환하는 경우 주의 won = (int) (dollar * rate); 묵시적 형 변환 혹은 캐스팅은 대상이 되는 변수나 수식 값 자체를 변경하지 않는다. © 우균, 창병모
관계 연산자 C 언어의 관계 연산자 두 값의 동치 관계나 두 값 간의 대소 관계를 비교한다. 연산 연산자 자료형 결과값 같다 a == b 정수형, 부동소수형 a 값과 b 값이 같으면 1(참) 그렇지 않으면 0(거짓) 다르다 a != b a 값과 b 값이 같지 않으면 1(참) 그렇지 않으면 0(거짓) 작다 a < b a 값이 b 값보다 작으면 1(참) 그렇지 않으면 0(거짓) 작거나 a <= b a 값이 b 값보다 작거나 같으면 1(참) 그렇지 않으면 0(거짓) 크다 a > b a 값이 b 값보다 크면 1(참) 그렇지 않으면 0(거짓) 크거나 a >= b a 값이 b 값보다 크거나 같으면 1(참) 그렇지 않으면 0(거짓) © 우균, 창병모
논리 연산자 C 언어의 논리 연산자 논리 NOT 연산자(!), 논리 AND 연산자(&&), 논리 OR 연산자(||) ! a 결과 논리 NOT ! a a가 거짓이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 AND a && b a, b 모두 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 OR a || b a, b 중 적어도 한 개가 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. © 우균, 창병모
비트 연산자 C 언어 시스템 프로그래밍 언어로 설계 다양한 비트 연산들을 제공 하드웨어를 다루는데 필요 a << n 구분 종류 연산자 자료형 결과 비트 이동 좌로 이동 (left shift) a << n 정수형 a를 n 비트만큼 좌측으로 이동하고 오른쪽 끝은 이동한 수만큼 0으로 채운다 우로 이동 (right shift) a >> n a를 n 비트만큼 우측으로 이동하고 왼쪽 끝은 이동한 수만큼 0 혹은 1로 채운다 비트 논리 비트 AND a & b a와 b의 비트 AND 값 비트 OR a | b a와 b의 비트 OR 값 비트 XOR a ^ b a와 b의 비트 XOR 값 1의 보수 연산 ~a a의 1의 보수 값 © 우균, 창병모
비트 연산자 진리표 a b a & b a | b a ^ b 1 a ~a 1 © 우균, 창병모
실습 © 우균, 창병모
실습 1 사칙연산을 수행하는 프로그램 두 개의 수를 입력하도록 합니다. 두 수의 더하기 빼기 곱하기 나누기한 결과를 출력하세요. 나머지까지 하면 술 사준다. © 우균, 창병모
실습 2 2의 배수로 곱하는 프로그램을 작성하세요 * 및 + 연산자 쓰면 혼난다 수를 입력 받을 것 입력 받은 수의 2의 배수, 4의 배수, 8의 배수, 16의 배수까지 출력할 것 © 우균, 창병모
실습 3 환율 프로그램 작성 \화당 달러 금액을 입력 받을 것 당연히 실수로 하여야 하겠죠? 바꾸고자 하는 원화를 입력 받을 것 원화에 해당하는 달러 액수를 출력 할 것 © 우균, 창병모