Presentation is loading. Please wait.

Presentation is loading. Please wait.

복습.

Similar presentations


Presentation on theme: "복습."— Presentation transcript:

1 복습

2 연산자 우선순위 연산자 우선순위 괄호를 이용한 연산 순서 조정 한 수식 내에서 연산자의 계산 순서
수식을 계산할 때 괄호로 묶인 수식은 먼저 수행된다. (fahrenheit - BASE) * 5.0 / 9.0 vs fahrenheit - BASE * 5.0 / 9.0 우선순위 연산자 1순위 단항 + 단항 - 2순위 *  /  % 3순위 +  - © 우균, 창병모

3 묵시적 변환 확장 변환 예 : won, rate가 float로 변환 int won=5, rate = 3;
float dollar; dollar = won / rate; won/rate = 이지만 won과 rate가 int형임. int형은 소수점을 저장하는 공간이 없음 따라서 소수점 뒷자리가 무시되서 1이 됨 그리고 dollar가 float니까 1에 소수점이 붙어 1.0되는 것임 © 우균, 창병모

4 명시적 형 변환 예 달러를 원으로 변환하는 경우 주의 int won=5, rate = 3; float dollar;
dollar = (float)won / rate; won을 float로 변환. 즉 5.0이 됨 즉 실수와 정수 나눗셈을 수행하게 되므로 결과는 저장크기가 큰 실수 주의 묵시적 형 변환 혹은 캐스팅은 대상이 되는 변수나 수식 값 자체를 변경하지 않는다. 즉, char a = ‘1’을 (int)a 해준다고 해서 ‘1’에 해당하는 정수 49가 정수 1이 되는것이 아님 © 우균, 창병모

5 논리 연산자 C 언어의 논리 연산자 논리 NOT 연산자(!), 논리 AND 연산자(&&), 논리 OR 연산자(||) ! a
결과 논리 NOT ! a a가 거짓이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 AND a && b a, b 모두 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. 논리 OR a || b a, b 중 적어도 한 개가 참이면 1(참)이고, 그렇지 않으면 0(거짓)이다. © 우균, 창병모

6 비트 연산자 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의 보수 값 © 우균, 창병모

7 실습 1 사칙연산을 수행하는 프로그램 두 개의 수를 입력하도록 합니다.
두 수의 더하기 빼기 곱하기 나누기한 결과를 출력하세요. 나머지까지 하면 술 사준다. © 우균, 창병모

8 실습 2 2의 배수로 곱하는 프로그램을 작성하세요 * 및 + 연산자 쓰면 혼난다 수를 입력 받을 것
입력 받은 수의 2의 배수, 4의 배수, 8의 배수, 16의 배수까지 출력할 것 © 우균, 창병모

9 실습 3 환율 프로그램 작성 \화당 달러 금액을 입력 받을 것 바꾸고자 하는 원화를 입력 받을 것
당연히 실수로 하여야 하겠죠? 바꾸고자 하는 원화를 입력 받을 것 원화에 해당하는 달러 액수를 출력 할 것 © 우균, 창병모

10 실습에 앞서…

11 이 장의 내용 대입문도 사실은 수식이다 증감연산자 조건연산자 괄호도 연산자인가? 우선순위와 결합 순서 정리

12 assignment2.c 실행결과: 초기의 a 값입니다. a = 0 a += 1; 을 수행했습니다. a = 1

13 김소연산자 전치와 후치 비교 초기 a, b 값이 5일 때, 후치와 전치 비교 후치 b=2*a-- 전치 b=2*--a 단계
수행연산 수식 a 값 b 값 N/A b = 2 * a-- 5 1 -- b = 2 * 5 4 2 * b = 10 3 = 10 단계 수행연산 수식 a 값 b 값 N/A b = 2 * --a 5 1 -- b = 2 * 4 4 2 * b = 8 3 = 8

14 조건연산자 유일한 3항 연산자 사용 예 조언 형식: 조건 ? 수식1 : 수식 2
의미: '조건'이 참이면 '수식1' 값을, 거짓이면 '수식2' 값을 돌려줌 사용 예 max = a > b ? a : b; a > b이면 max = a; 그렇지 않으면 max = b; 조언 조건을 괄호로 감싸면 더 이해하기 쉬움 max = (a > b)? a: b;

15 계산순서에 관한 주의사항 우선순위/결합순서와 계산 순서는 다르다 피연산자의 계산 순서는 정의되지 않은 경우가 많음
우선순위/결합방향은 먼저 계산한다는 의미가 아님 괄호로 묶었다고 해서 먼저 계산된다는 의미도 아님 피연산자의 계산 순서는 정의되지 않은 경우가 많음 예외: 단락회로 계산 연산자 && || ?: , +의 계산 순서 x = f() + g(); f가 먼저 호출된다는 보장이 없음 함수 인수 계산 순서 printf("%d %d\n", ++n, power(2, n)); ++n이 먼저 수행된다는 보장이 없음

16 실습

17 ▶ 프로그래밍 실습 1 체질량지수(BMI: body mass index)를 계산하여 이에 따라 비만 여부를 판별하는 프로그램을 작성하라. 체질량지수는 다음 공식(단위: kg, cm)에 의해 계산한다. 몸무게와 키를 입력으로 받아 BMI를 출력하고 비만도를 판정하는 프로그램을 작성하라.

18 #include <stdio.h> int main(){ float height; float weight; //몸무게 입력 //키 입력 float result = calBMI(height,weight); if(result < 20){ printf(“저체중\n"); } else if(result >= 20 || result < 25){ printf(“정상\n"); else if(result >= 25 || result < 30){ printf(“과체중\n"); else if(result >= 30){ printf("비만ㅋ. 돼지\n"); float calBMI(float height, float weight){ float result; //height와 weight를 이용하여 공식을 구현 return result;

19 ▶ 프로그래밍 실습 2 근의 공식에 따라 이차방정식의 두 근의 근사값을 구하는 프로그램을 작성하라. 이차방정식 ax2+bx+c = 0을 입력받기 위해 이차방정식의 계수 a, b, c를 입력 받는다. 이차방정식의 계수는 float 타입으로 주어지며 a는 0이 아니라고 가정한다. 이차방정식의 근의 공식은 다음 식으로 주어진다. 근의 공식에서 제곱근을 구하기 위해서는 라이브러리 함수 sqrt를 이용하라. 예를 들어, 2의 제곱근은 sqrt(2.0)으로 구할 수 있다. 라이브러리 함수 sqrt를 사용하기 위해서는 헤더파일 <math.h>를 #include해야 한다.


Download ppt "복습."

Similar presentations


Ads by Google