정보처리기사/[흥달쌤] 실기_깨알 C언어

C언어 특강 / 05. 산술연산자, 06. 연산자 우선순위, 07. 관계-논리 연산자, 조건문, 08. 논리연산자, 증감연산, 09. 산술연산자

web_seul 2022. 5. 3. 12:20
반응형

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)

 

반응형