연산자와 표현식 C H A P T E R 3. 소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 Part 03 상수, 변수, 자료형 안산 1 대학 디지털정보통신과 임 성 국. 2 이 장의 내용 자료형이란 무엇인가 ? 상수와 변수 정수형 부동소수형 문자형.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
/ 4강_연산자 4-1 할당연산자 4-2 사칙연산자 및 나머지 연산자 4-3 자동증감 연산자 4-4 비교 연산자 4-5 논리 연산자 4-6 부정 연산자 4-7 복합대입 연산자 /
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Excel 일차 강사 : 박영민.
Chapter 7. 조건문.
컴퓨터 프로그래밍 기초 [Final] 기말고사
능동적인 생각은 프로그래밍 공부에 큰 도움 3장 근의 공식은 어떻게 표현하나? 왜 정수와 실수를 구별하나?
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Chapter 04 C 연산자의 이해.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Part 05 순수한 연산자 ©우균, 창병모 © 우균, 창병모.
2주차: 변수, 수식, Control Flow.
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 03. 변수와 연산자.
C#.
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
메모리 관리 & 동적 할당.
상수와 기본 자료형.
C 3장. 변수와 데이터형 #include <stdio.h> int main(void) { int num;
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 02. 자바 기본 문법.
8주차: Strings, Arrays and Pointers
1. 2진 시스템.
Chapter 07 비트와 여러 연산자.
3강. 컴퓨터와의 기본적인 소통수단 - I 연산자란? 컴퓨터와 소통하기 위한 다양한 방법들
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
제3장 함수와 배열수식 전진환
제5장 변수, 연산자, 수식.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
2장 PHP 기초 PHP의 시작과 끝을 이해한다. 주석문에 대하여 이해한다. echo 문을 이용하여 화면에 출력하
7주차: Functions and Arrays
Chapter 02 C# 기본 01 기본 용어 06 증감 연산자 02 출력 07 자료형 검사
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
제 22 강 논리식 및 논리 값 shcho.pe.kr.
Numerical Analysis Programming using NRs
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
제 4 장 Record.
제 3장 연 산 자 연 산 자 의 종 류 연 산 자 우 선 순 위 형 변 환.
13. 포인터와 배열! 함께 이해하기.
Visual Basic .NET 기초문법.
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산.
Presentation transcript:

연산자와 표현식 C H A P T E R 3

소개 C 에는 많은 내장 연산자가 있다 프로그램에서 연산자는 데이터와 변수 조작에 사용 C 연산자의 분류 1. 산술 연산자 2. 관계 연산자 3. 논리 연산자 4. 대입 연산자 5. 증가 감소 연산자 6. 조건 연산자 7. 비트 연산자 8. 특수 연산자 2

3.2 산술 연산자 산술 연산자는 다른 언어에서와 같은 의미 C 의 모든 내장 자료형에 대해서 사용할 수 있다 3

a+b 와 같은 간단한 산술 연산에서 두 개의 피연산자가 정수이면 정수형 산술 계산 결과는 언제나 정수값을 만든다 Ex) a = 14, b = 4 a – b = 10 a + b = 18 a * b = 56 a / b = 3 ( 소수부분 버림 ) a % b = 2 ( 나눗셈의 나머지 ) 3.2 산술 연산자 4

정수 나눗셈에서 두 피연산자가 같은 부호이면 소수부는 0 으로 절단되지만, 피연산자가 다른 부호이면 기계에 따라 소수부 절단의 결과가 달라질 수 있다 6 / 7 = 0 -6 / -7 = 0 -6 / 7 = 0 또는 -1 ( 기계에 따라 다름 ) 비슷하게, 나머지 연산에서 결과는 항상 첫 번째 피연산자 ( 피제수 ) 의 부호이다 -14 % 3 = % -3 = % -3 = 산술 연산자 5

그림. 3.1 정수 산술의 예 3.2 산술 연산자 6

실수 계산 만약 x, y, z 가 float 라면 x = 6.0 / 7.0 = y = 1.0 / 3.0 = z = -2.0 / 3.0 = 혼합형 계산 피연산자가 하나는 실수이고 다른 하나는 정수일 때 15 / 10.0 = 1.5 ( 혼합 ) 15 / 10 = 1 ( 혼합이 아님 ) 3.2 산술 연산자 7

두 개의 양을 비교하여 그 관계에 따라 결정을 내릴 때 사용 관계 연산자 이런 비교는 관계 연산자 이용 3.3 관계 연산자 8

산술 연산자는 관계 연산자보다 우선순위가 더 높다 ifwhile 관계 연산식은 if 나 while 같은 판단문에서 사용된다 9

3.4 논리 연산자 C 에 있는 논리 연산자 && 의미는 AND || 의미는 OR ! 의미는 NOT 논리 연산자 && 와 || 는 하나 이상의 조건을 평가하여 결정을 내릴 때 사용 10

3.4 논리 연산자 논리식의 사용 예 : 1. if (age > 55 && salary < 1000) 2. if (number 100) 관계 연산자와 논리 연산자의 상대적인 우선순위 : 높음 ! > >= < <= == != && 낮음 || 11

3.5 대입 연산자 축약 대입연산자의 세 가지 장점 1. 왼편을 반복할 필요가 없어서 더 쓰기 쉽다 2. 문장이 더 간략하고 읽기 쉽다 3. 문장이 더 효율적이다 12

3.5 대입 연산자 13

3.6 증가와 감소 연산자 ++m; 은 m = m + 1; (or m += 1;) 와 같다 --m; 은 m = m – 1; (or m -= 1;) 와 같다 ++m 와 m++ 는 독립적으로 사용되면 똑같지만 대입문의 오른편 표현식으로 사용된다면 의미가 다르다 14

전위 연산자는 피연산자에 1 을 더하고난 결과가 왼편의 변수에 저장된다 m = 5; y = ++m; 결과는 y 와 m = 6 후위 연산자는 왼편의 변수에 값을 대입하고 나서 피연산자가 증가된다 m = 5; y = m++; 결과는 y = 5 이고 m = 증가와 감소 연산자 15

3.6 증가와 감소 연산자 16

3.7 조건 연산자 3 항 연산자 “ ?: “ 는 다음과 같이 사용한다 ?: 는 다음과 같이 처리된다 : 1. exp1 이 계산된다 2. 만일 exp1 이 0 이 아니면 ( 참 ), exp2 가 계산되고 이 표현식의 값이 된다 3. 만일 exp1 이 거짓이면, exp3 이 계산되고 이 값이 표현식의 값이 된다 17

3.7 조건 연산자 예를 들어, a = 10; b = 15; x = ( a > b ) ? a : b; 이것은 if..else 문을 사용하여 나타낼 수 있다 If ( a > b ) x = a; else x = b; 18

3.8 비트 연산자 비트 연산자C 에는 데이터를 비트 수준에서 다루기 위한 비트 연산자 가 있다 비트를 검사하거나 오른쪽 또는 왼쪽으로 이동 시킨다 floatdouble 비트 연산자는 float 나 double 형의 데이터에는 사용할 수 없다 19

3.9 특수 연산자 C 에서 지원하는 특수 연산자 1. 쉼표 연산자 sizeof 2. sizeof 연산자 3. 포인터 연산자 (& 와 *) → 11 장 4. 멤버 선택 연산자 (. 와 ->) → 10,11 장 20

3.9 특수 연산자 쉼표 연산자 쉼표 연산자 쉼표 연산자는 관련된 표현식을 연결시키는데 사용한다 왼쪽에서 오른쪽으로 가장 오른쪽 쉼표로 연결된 표현식은 왼쪽에서 오른쪽으로 평가되고 가장 오른쪽 표현식의 값이 전체 표현식의 값이다 Value = ( x = 10, y = 5, x+y ); xyvalue 결과는 x 에 10, y 에 5, value 에 15 가 대입된다 21

3.9 특수 연산자 쉼표 연산자는 모든 연산자 중에서 가장 낮은 우선순위를 가지기 때문에 괄호가 필요하다 쉼표 연산자의 적용 예 : for for 루프 : for ( n = 1, m = 10, n <= m; n++, m++) while while 루프 : while ( c = getchar (), c != ‘10’) 값의 교환 : t = x, x = y, y = t; 22

3.9 특수 연산자 sizeof 연산자sizeof 연산자 sizeofsizeof 는 컴파일시간 연산자이며, 피연산자가 차지하는 바이트 수를 반환한다 sizeof m=sizeof (sum); sizeof n =sizeof (long int); sizeof k =sizeof (235L); sizeofsizeof 연산자는 배열과 구조체의 길이를 알아내기 위해서 사용한다 프로그램의 실행 중에 기억공간을 동적으로 변수에 할당할 때 사용한다 23

3.9 특수 연산자 그림. 3.3 산순 연산자의 사용 예 24

3.10 산술식 산술식은 프로그래밍 언어의 문법에 따라 구성된 변수, 상수, 연산자의 조합이다 C 는 복잡한 수학 표현식도 나타낼 수 있다 25

3.11 표현식의 계산 문장에서 표현식이 먼저 평가되고 그 결과가 왼쪽 변수의 기존값을 대체한다 표현식에서 사용된 모든 변수들은 계산이 일어나기 전에 값을 가지고 있어야 한다 x = a * b – c; y = b / c * a; z = a – b / c + d; 이런 문장에서 변수 a,b,c,d 는 표현식에 사용되기 전에 값이 정의되어 있어야 한다 26

그림. 3.4 표현식의 계산 3.11 표현식의 계산 27

3.12 산술 연산자의 우선순위 왼쪽에서 오른쪽 괄호가 없는 산술식에서는 연산자 우선순위에 따라 왼쪽에서 오른쪽으로 연산이 수행된다 높은 우선순위 * / % 낮은 우선순위 + - 예 ) 그림 3.4 x = a –b/3 + c * 2 -1 a = 9, b = 12, c = 3 일 때 x = /3 + 3 *

3.12 산술 연산자의 우선순위 첫 번째 패스 1 단계 : x = 9 – * 단계 : x = 9 – 두 번째 패스 3 단계 : x = – 1 4 단계 : x = 11 – 1 5 단계 : x = 10 29

괄호를 넣어서 계산 순서를 바꿀 수 있다 : 9 – 12 / ( ) * ( 2 – 1 ) 첫 번째 패스 1 단계 : 9 – 12 / 6 * ( 2 – 1 ) 2 단계 : 9 – 12 / 6 * 1 두 번째 패스 3 단계 : 9 – 2 * 1 4 단계 : 9 – 2 세 번째 패스 5 단계 : 산술 연산자의 우선순위 30

3.12 산술 연산자의 우선순위 31

3.13 계산에서의 문제 실수에서의 값은 근사치이고 이런 근사에 의한 오차는 중대한 문제를 일으킬 수 있다 a = 1.0 / 3.0; b = a * 3.0; b 계산된 b 의 결과값이 1 이 된다고 보장할 수 없다 또 다른 문제는 0 으로 나누는 경우 대부분의 컴퓨터에서는 비정상적으로 프로그램이 종료된다 오버플로우와 언더플로우 오류 피연산자가 올바른 자료형과 범위인지를 확실히 해야만 오버플로우와 언더플로우가 발생되지 않는다 32

그림 3.6 부동수수점에서 반올림 오차 3.13 계산에서의 문제 33

3.14 표현식에서 형변환 묵시적 형변환 묵시적 형변환 C 에서 표현식에 서로 다른 형의 상수와 변수를 섞어 쓸 수 있다 피연산자의 형이 다르면 연산이 수행되기 전에 ‘ 낮은 ’ 형은 ‘ 높은 ’ 형으로 자동 변환된다 그림 3.7 묵시적 형변환 과정 34

shortcharint 모든 short 와 char 는 자동적으로 int 로 변환된다 long double 1. 피연산자중 하나가 long double 이면, 다른 피연산자는 long doublelong double long double 로 변환되고 결과도 long double 이 된다 double 2. 그렇지 않고, 피연산중 하나가 double 이면, 다른 피연산자는 doubledouble double 로 변환되고 결과도 double 이 된다 float 3. 그렇지 않고, 피연산자중 하나가 float 이면, 다른 피연산자는 floatfloat float 로 변환되고 결과도 float 가 된다 unsigned long int 4. 그렇지 않고, 피연산자 하나가 unsigned long int 이면, 다른 피연산자는 unsigned long int unsigned long int unsigned long int 로 변환되고 결과도 unsigned long int 가 된다 3.14 표현식에서 형변환 35

long int unsigned int 5. 그렇지 않고, 피연산자 하나가 long int 이고 다른 피연산자가 unsigned int 이면, unsigned int 가 long intunsigned int (a) 만약 unsigned int 가 long int, 로 변환될 수 있으면 unsigned int long int 피연산자는 그렇게 변환되고 결과도 long int 가 된다. unsigned long int (b) 그렇지 않으면, 두 피연산자는 unsigned long int 로 변환되고 unsigned long int 결과도 unsigned long int 가 된다. long int 6. 그렇지 않고, 피연산자 하나가 long int 이면, 다른 피연산자는 long int long int long int 로 변환되고 결과도 long int 가 된다. unsigned int 7. 그렇지 않고, 피연산자 하나가 unsigned int 이면, 다른 피연산자는 unsigned int unsigned int unsigned int 로 변환되고 결과도 unsigned int 가 된다 표현식에서 형변환 36

3.14 표현식에서 형변환 37

표현식의 최종 결과는 변수에 대입되기 전에 대입기호 횐편의 변수형으로 변환된다 floatint 1. float 에서 int 로의 대입은 소수 부분이 절단된다 double float 2. double 에서 float 로의 대입은 반올림이 발생한다 long int int 3. long int 에서 int 로의 대입은 초과되는 상위 비트를 잘라낸다 3.14 표현식에서 형변환 38

명시적 변환 명시적 변환 예 ) ratio = female_number / male_number female_numbermale_number ratiofemale_number 와 male_number 가 정수로 선언되었기 때문에 나눗셈 결과의 소수 부분은 없어지고 ratio 는 잘못된 값을 나타낸다 이 문제는 변수 하나를 부동소수점 형으로 일시적으로 변환하여 해결할 수 있다 float ratio = (float) female_number / male_number 3.14 표현식에서 형변환 39

floatfemale number 연산자 (float) 는 변수 female number. 의 원래 값에는 영향을 미치지 않는다 female number intfemale number 의 형은 프로그램의 다른 부분에서는 int 로 남아 있는다 3.14 표현식에서 형변환 40

그림 3.8 캐스팅의 사용 3.14 표현식에서 형변환 41

3.15 연산자 우선순위와 결합규칙 높은 우선순위의 연산자가 먼저 평가된다 같은 수준의 연산자들은 ‘ 왼쪽에서 오른쪽 ’ 이나 ‘ 오른쪽에서 왼쪽 ’ 으로 평가된다. 42

3.15 연산자 우선순위와 결합규칙 43

3.16 수학 함수 대부분의 C 컴파일러는 기본 수학 함수를 지원한다 : xydouble 주의 : 1. x 와 y 는 double 로 선언되어야 한다 xy 2. 삼각함수와 쌍곡선함수의, x 와 y 는 라디안 값이다 double 3. 모든 함수는 double 값을 반환한다 floatlong double 4. C99 에는 이런 함수들의 float 와 long double 버전이 ] 추가되어 있다 5. C99 에는 더 많은 수학 함수를 지원한다 6. 더 상세한 것은 부록 “C99 특징 ” 을 참조 44

3.16 Mathematical Functions 45

요약 1 46

요약 2 47

그림 3.9 판매사원 급여계산 프로그램 사례 연구 48

그림 3.9 판매사원 급여계산 프로그램 사례 연구 49