05. 산술연산자
* 산술연산자 종류
구분 | 종류 | 예 |
이항연산자 | +, -, *, /, % | 3*4; |
단항연산자 | ++, -- | 4++; |
대입연산자 | =, +=, -=, *=, /= | a+=3; |
ex)
- 3/4 = 0 (실수/실수 = 실수)
- a = 10; b = a++; c = ++a; //a=10, b=10, c=12
- a =10; a += 10;
문) 아래 C프로그램의 실행결과는?
#include<stdio.h>
void main(){
int a, b;
a=4*(1/2); //1/2 = 0 이 됨, a=0
b=a++; //b=0
printf("%d", b); //0
}
06. 연산자 우선순위
높음 ↑ ↓ 낮음 |
( ) | 괄호 |
++, --, ~, ! | 단항 | |
*, /, % | 산술 | |
+, - | 산술 | |
<<, >> | 비트 | |
<, <=, >, >= | 비교 | |
==, != | 관계 | |
&, ^, | | 비트 | |
&&, || | 논리 | |
=, +=, -+, *=, /=, %= | 대입 |
* 연산자 우선순위 예시
- int a = 3; int b = 4; int c = 5; int d = 6;
1) a * b + c > = d && d / a - b != 0 =
12+c > = d && 2 -b != 0
17 >= d && -2 != 0
(true) 1 && (true) 1
1
2) d % b + ++a * c-- =
2 + 4 * 5 =
22
3) d % b + a++ * c-- =
2 + 3*5 =
17
문) 아래 C프로그램의 출력은?
#include<stdio.h>
int main(){
int a=5, b=5;
a *= 3 + b++; //5 *= 8 후에 b+1 실행
printf("%d %d", a, b); //a = 40, b = 6
return 0;
}
07. 관계-논리 연산자, 조건문
* 관계연산자 종류
연산자 | 예 | 결과값 |
== | 10 == 9 | 0 (F) |
!= | 3 != 3 | 0 (F) |
> | 5 > 5 | 0 (F) |
>= | 5 >= 5 | 1 (T) |
< | 7 < 7 | 0 (F) |
<= | 7 <= 7 | 1 (T) |
* 논리연산자 종류
연산자 | 예 | 결과값 |
! | !9 | 0 (F) |
&& | 3 >= 3 && 3 > 3 | 0 (F) |
|| | 5 > 5 || 5 >= 5 | 1 (T) |
* 조건문
- 단순 if문
if(조건){
조건이 만족할 때의 처리;
}
- if ~ else 문
if(조건){
조건이 만족할때의 처리
}
else{
조건이 아닐때의 처리
}
- 다중 if문
if(조건1){
조건1이 만족할때의 처리
}
else if(조건2){
조건2가 만족할때의 처리
}
else{
모든 조건이 아닐때의 처리
}
문) 아래 C프로그램의 출력은?
#include<stdio.h>
int main(){
int i = 3;
int j = 4;
if((++i > j--)&&(i++ < --j)) i = i-- + ++j;
//(4>4) && 수행x
//F (i=4, j=3 인 상태)
else j = i-- - --j; //j=4-2(i=3,j=2 인 상태)
printf("%d\n", i); //i=3
}
#include<stdio.h>
int main(){
int i = 3;
int j = 4;
if((++i > j--)&&(i++ < --j)) || (++i > ++j)){
i = i-- + ++j;
}
else{
j = i-- - --j;
}
printf("%d\n", i);
}
08. 논리연산자, 증감연산
* 관계연산자 종류
연산자 | 예 | 결과값 |
== | 10==9 | 0 |
!= | 3!=3 | 0 |
> | 5>5 | 0 |
>= | 5>=5 | 1 |
< | 7<7 | 0 |
<= | 7<=7 | 1 |
문) 아래 C프로그램의 실행결과는?
#include<stdio.h>
int main(){
int a = 3+5, b=1, c; //a=8, b=1
int ap, bp;
ap = a++; //ap=8, a=9
bp = ++b; //bp=2, b=2
b = 3*(ap == 8); //b = 3*(8 == 8); = 3
c = 5*(ap != 8); //c = 5*(8 != 8); = 0
printf("%d %d %d %d %d", a, b, c, ap, bp); //a=9, b=3, c=0, ap=8, bp=2
}
*참고사이트 http://ideone.com
09. 산술연산자
문) 모든 변수가 int형이라고 가정할때, 각 변수들의 값은?
y = 3 + 2 * ( x = 7 / 2 ); //x=3(정수/정수는 정수), y=9
num = 6 + 14 % 5 / 2 - 2 * 2;
// 6 + 4/2 - 4
// 6 + 2 - 4
// = 4
int a = 10, b = 20;
num = (a++ == 11) && (b++ == 20);
// 10 == 11 (F=0) && 20 ==20 (T=1), a=11, b=21
// num = 0
// but! a,b의 값을 묻는 경우는 a=11, b=20 (&& 이후로 실행x)
반응형