Upload
chul-min-kim
View
175
Download
5
Embed Size (px)
Citation preview
2016.08.181
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
2
C 프로그래밍 (2)식과 연산자
식(expression) 구조 식의 값과 출력
C언어 식(expression) 구성
- 식(expression) : 컴퓨터에서 여러 가지처리를 ‘계산’으로 실행, 코드 안에서식의 계산으로 표현됨
- 연산자(operator) : 연산하는 방식- 피연산자(operand) : 연산의 대상
- 식의 평가 : 식의 결과 값 도출
연산자와 피연산자의 조합
int num1 = 2;
int num2 = 3;
int sum = num1+num2;
printf(“1+2는 %d입니다. \n”, 1+2);
printf(“3X4는 %d입니다. \n”, 3*4);
printf(“num1+num2의 값은 %d \n”, sum);
num1 = num1 + 1;
printf(“num1에 1을 더한 값은 %d \n”, num1);
1 2
3
+
평가
피연산자 피연산자연산자
식
1+2는 3입니다.3x4는 12입니다.num1+num2의 값은 5입니다.num1에 1을 더한 값은 3입니다.
다양한 연산
실행한 결과
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
3
연산자의 종류
기호 이름 단항 기호 이름 단항
+ 덧셈 >= 이상
- 뺄셈 < 미만
* 곱셈 <= 이하
/ 나눗셈 == 등가% 나머지 != 비등가+X 단항 + 단항 ! 논리 부정 단항-X 단항 - 단항 && 논리곱
~ 보수 단항 || 논리합
& 비트 논리곱 * 간접 참조 단항
| 비트 논리합 , 순차
^ 비트 배타적 논리합 ( ) 함수 호출 단항
= 대입 ( ) 캐스트 단항<< 좌 시프트 [ ] 인덱스, 배열 첨자 단항>> 우 시프트 . 멤버 참조(dot)
++ 증가 단항 ->멤버 간접참조
(arrow)-- 감소 단항 ? : 조건> 보다 크다 sizeof 크기 단항
★ 단항 표시 이외의 모든 연산자는 이항 연산자임
C 프로그래밍 (2)
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
4
C 프로그래밍 (2)증감 연산자
증가 연산자(++) 감소 연산자(--)
int a = 0, b = 0;
b = a++;
printf(“대입 후에 증가했기 때문에 b의값은 %d입니다. \n”, b);
b = ++a;
printf(“대입 전에 증가했기 때문에 b의값은 %d입니다. \n”, b);
대입 후에 증가했기 때문에b의 값은 0입니다.대입 전에 증가했기 때문에 b의 값은 2입니다.
실행한 결과
a++; ++a;
a = a+1;==
int a = 2, b = 0;
b = a--;
printf(“대입 후에 증가했기 때문에 b의값은 %d입니다. \n”, b);
b = --a;
printf(“대입 전에 증가했기 때문에 b의값은 %d입니다. \n”, b);
대입 후에 증가했기 때문에b의 값은 2입니다.대입 전에 증가했기 때문에 b의 값은 0입니다.
실행한 결과
a--; --a;
a = a-1;==
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
5
C 프로그래밍 (2)대입 연산자
복합 대입 연산자 덧셈 대입 연산자 예시코드
int sum = 0, num = 0;
printf(“1번째 정수를 입력하세요. \n”);
scanf(“%d”, &num);
sum += num;
printf(“2번째 정수를 입력하세요. \n”);
scanf(“%d”, &num);
sum += num;
printf(“2가지 수의 합계는 %d입니다. \n”, sum);
1번째 정수를 입력하세요.1 [enter]2번째 정수를 입력하세요.3 [enter]2가지 수의 합계는 4입니다.
실행한 결과
기호 이름
+= 덧셈 대입
-= 뺄셈 대입
*= 곱셈 대입
/= 나눗셈 대입
%= 나머지 대입
&= 논리곱 대입
^= 배타적 논리합 대입
|= 논리합 대입
<<= 좌 시프트 대입
>>= 우 시프트 대입
a += b; a = a+b;==
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
6
C 프로그래밍 (2)시프트(shift) 연산자
왼쪽 시프트 연산자(<<) 오른쪽 시프트 연산자(>>)
5<<2 의 연산(short int형 2byte=16bit)
5 0000000000000101
<< 2
-------------------------------
20 0000000000010100
좌변의 값이 5, 우변의 값이 2인 경우,5 << 2 => 5 x (2 ^ 2) => 5의 4배 => 20
연산의 의미
좌변의 값을 우변에서 지정한 자릿수만큼 왼쪽으로 이동시키고, 초과한자릿수 만큼 오른쪽 끝자리부터 0을채우는 연산
2자릿수 만큼 왼쪽 이동, 오른쪽끝자리 0을
채움
5>>2 의 연산(short int형 2byte=16bit)
5 0000000000000101
>> 2
-------------------------------
1 0000000000000001
좌변의 값이 5, 우변의 값이 2인 경우,5 >> 2 => 5 / (2 ^ 2) => 5의 1/4배 => 1
연산의 의미
좌변의 값을 우변에서 지정한 자릿수만큼 오른쪽으로 이동시키고, 초과한자릿수 만큼 왼쪽 끝자리부터 0을 채우는 연산
2자릿수 만큼 오른쪽이동, 왼쪽끝자리 0을
채움
★ 컴퓨터 내부에서는 2진수를 취급하기 때문에 일반적인 사칙연산보다 주로 시프트 연산을 사용
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
7
C 프로그래밍 (2)
ㅑ
캐스트 연산자 형 변환 예시코드
double dnum;
int inum;
dnum = 160.5;
printf(“키는 %f cm입니다. \n”, dnum);
printf(“int형 변수에 대입합니다. \n”);
inum = (int) dnum;
printf(“키는 %d cm입니다. \n”, inum);
키는 160.500000 cm입니다.
int 형 변수에 대입합니다.
키는 160 cm 입니다.
실행한 결과
구문 : ( 데이터 형 ) 식지정한 식의 형을 ( ) 내에서지정한 형으로 변환, 형 변환을코드 내에 명시적으로 표기
int형
dnum
inum
double형int 형으로 변환
캐스트 연산자(명시적 형 변환)
inum = (int) dnum대입할 때 크기가작은 형으로 변환됨
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
8
C 프로그래밍 (2)연산과 형 변환
서로 다른 형의 연산 동일한 형의 연산
int d = 2;
double pi = 3.14;
printf(“지름이 %d cm인 원의 \n“, d);
printf(“원둘레는 %f cm입니다. \n“, d*pi);
지름이 2 cm인 원의원둘레는 6.280000 cm입니다.
실행 결과
한쪽의 피연산자를 크기가 큰 쪽으로형 변환 후 연산을 처리
int num1=5, num2=4;double div;
div = num1/num2;printf(“5/4는 %f입니다. \n”, div);
div = (double)num1/(double)num2;printf(“5/4는 %f입니다. \n”, div);
5/4는 1.000000입니다.5/4는 1.250000입니다.
실행 결과
동일한 형의 피연산자들을 연산할 때결과 값이 피연산자와 동일한 형인경우와 다른 형인 경우를 고려하여피연산자를 변환하여 연산 필요함
int형 d의 값 ‘2’가 double형 값‘2.0’으로 변환된 후 곱셈 실행
5÷4 결과 int형 1값
5÷4의 예상 결과는1.25이었으므로피연사자들을double형으로캐스팅하여 계산함
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
9
C 프로그래밍 (2)관계 연산자와 조건
조건의 개념과 표기
5 > 3 : 이 조건의 평가는 ‘참’이다.5 < 3 : 이 조건의 평가는 ‘거짓’이다.a == 6 : 이 조건은 변수 a 값에 따라 결정(a가 6이면 참, 6이외 다른 수면 거짓)※ ==와 = 다른 기호임, ‘=‘는 대입연산자
관계 연산자
< 조건의 식 >
3 > 1 : 3은 1보다 크기 때문에 이
부등식은 ‘맞다’ 또는 ‘참’이라고 평가
3 < 1 : 이 부등식 ‘틀리다’ 또는 ‘거짓'이라고 평가
참(true), 거짓(false)
두 가지 값 중에 하나로 표현한 것을C언에서는 ‘조건'이라고 합니다.
그 조건이 ‘맞다‘ 또는 ‘틀리다'라는것을 나타내는 것
3 1
참
>평가
식
3 1
거짓
<조건
연산자 식이 참인 경우
== 우변이 좌변과 같다
!= 우변이 좌변과 같지 않다
> 우변보다 좌변이 크다
>= 우변보다 좌변이 크거나 같다
< 우변보다 좌변이 작다
<= 우변보다 좌변이 작거나 같다
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
10
C 프로그래밍 (2)
if문 구조 if문 예시코드
int res;
printf(“정수를 입력하세요. \n”);
scanf(“%d”, &res);
if(res == 1)
printf(“1이 입력되었습니다.\n”);
printf(“처리를 종료합니다. \n”);
정수를 입력하세요.
1 [enter]
1이 입력되었습니다.
처리를 종료합니다.
참인 경우
if 구문
if(조건)
문;
1이 입력되면 조건은 참이되고 아래의 문이 처리
조건 판단문(if문)
if
- ‘조건’의 값(참 또는 거짓)에 따라 처리가 이루어지는 구문
- 조건이 참이면 아래의지정한 문이 처리
조건
문
참
거짓 정수를 입력하세요.
10 [enter]
처리를 종료합니다.
거짓인 경우
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
11
C 프로그래밍 (2)
if ~ else문 구조 if ~ else문 예시코드
int res;
printf(“정수를 입력하세요. \n”);
scanf(“%d”, &res);
if(res == 1) {
printf(“1이 입력되었습니다.\n”);
} else {
printf(“1 이외의 값이 입력되었습니다.\n”);
}
정수를 입력하세요.
1 [enter]
1이 입력되었습니다.
참인 경우
if(조건){문1; 문2;} else {문3; 문4;}
1이 입력되면 if 문 아래구문이 처리되고
그 외의 값이 들어오면else 아래 구문 처리
조건 판단문(if ~ else 문)
- 조건이 참이면 문1을처리하고, 거짓이면문2를 처리함
- 이 구문도 { }로 묶어서복수의 문 처리 가능
조건
문2
참거짓
정수를 입력하세요.
10 [enter]
1 이외의 값이 입력되었습니다.
거짓인 경우문1
문4
문3
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
12
C 프로그래밍 (2)
if ~ else if ~ else문 구조 if ~ else if ~ else문 예시코드
int res;printf(“정수를 입력하세요. \n”);scanf(“%d”, &res);
if(res == 1) {printf(“1이 입력되었습니다.\n”);
} else if(res == 2){printf(“2가 입력되었습니다.\n”);
} else {printf(“1이나 2를 입력하세요.\n”);
}
정수를 입력하세요.1 [enter]1이 입력되었습니다.
1 입력 경우
if(조건1){문1; 문2;} else if(조건2){문3; 문4;} else {…
}
조건 판단문(if ~ else if ~ else 문)
- 두 가지 이상의 조건에따른 처리 가능
- 조건1 참이면 아래 구문처리, 거짓이면 다음 조건을 판단하고 모든 조건이 거짓이면 else 아래의 문이 처리
정수를 입력하세요.2 [enter]2가 입력되었습니다.
2 입력 경우
조건1참
거짓
문
거짓
조건2
문
문
참
정수를 입력하세요.3 [enter]1이나 2를 입력하세요.
1, 2 이외입력 경우
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
13
C 프로그래밍 (2)
switch문 구조 switch문 순서도
switch(식){case 상수1:문1; …break;
case 상수2:문2; …break;
default:문D; …break;
}
조건 판단문(switch 문)
- switch문 안의 식이case 상수 값과 일치하면, 아래의 문부터 ‘break’까지 처리됨. 만약 어느case 상수 값과도일치하지 않는다면‘default’아래의 문이처리됨
- switch문을 이용하면 식과 case 상수를 비교하여 if~elseif~else 구문 보다간단하게 표기할 수있음
case1:
switch
문
default:
case2:
문
문
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
14
논리 연산자
연산자 참이 되는 경우평가
좌 우 전체
&& 좌변과 우변이 모두 참일 때
거짓 거짓 거짓
거짓 참 거짓
참 거짓 거짓
참 참 참
|| 좌변과 우변 중 한쪽이 참일 때
거짓 거짓 거짓
거짓 참 참
참 거짓 참
참 참 참
! 우변이 거짓일 때거짓 참
참 거짓
C 프로그래밍 (2)
5>3 && 3==4
a==6 || a>=12
!(a==6)
5>3 식은 참이고 3==4 식은 거짓이며참 && 거짓 연산 결과는 거짓입니다.
변수 a의 값이 6 또는 12 이상일 때 참이 됩니다.
변수 a의 값이 6이 아닐 때 참이 됩니다.
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
15
C 프로그래밍 (2)조건 연산자
ans = (res==1) ? ‘A’ : ‘B’
참일 경우 ans = ‘A’
거짓일 경우 ans = ‘B’
조건 연산자 조건 연산자 예시 코드
- 조건 연산자를 사용하면 간단한
조건에 따른 처리를 할 수 있다.
- 조건 연산자는 세 개의 피연산자를가진다.
- 전체 식의 값은 조건이 참일 때 식 1의 값, 거짓일 때 식 2의 값이 됩니다.
조건 ? 참이면 식1 : 거짓이면 식2int res;
char ans;
printf(“몇 번째를 선택할까요? \n”);
printf(“정수를 입력하세요. \n”);
scanf(“%d”, &res);
ans = (res==1) ? ‘A’ : ‘B’;
printf(“%c 코스를 선택했습니다. \n”, ans);
몇 번째를 선택할까요?정수를 입력하세요.1 [enter]
A코스를 선택했습니다.
‘1’ 입력 결과
몇 번째를 선택할까요?정수를 입력하세요.2 [enter]B코스를 선택했습니다.
‘2’ 입력 결과
YONSEI COMPUTER SCIENCE ACADEMY Coding in CAFÉ
16
본 자료는 코딩인카페 1기 C&JAVA 기초과정5회차 자료 중 일부를 발췌한 내용입니다.
< 참고자료 >- 그림으로 배우는 C프로그래밍, 마나 다카하시, 영진닷컴.