본문 바로가기
카테고리 없음

정보처리기사 c언어 실기 빈출 top

by 루미..1 2023. 8. 23.

01.증가연산자

#include <stdio.h>

int main( ) {

     int a = 5, b = 6, c = 7;
     c = (a++, ++b, a+b);

     printf("%d, %d, %d\n", a, b, c);
     return 0 ;

}

 

▶설명

더보기

*int a = 5, b = 6, c = 7;

정수형 변수  a,b,c가 5,6,7로 초기화된다.

 

*c = (a++, ++b, a+b);

a++ : 후위 증가 연산자. 값을 사용한 후 1 증가

++b : 전위 증가 연산자. 값을 사용하기 전 1 증가

%d는 정수 값을 출력하는 서식 지정자

 

 

02.조건연산자, 단락 평가(short- circuit evaluation)

#include <stdio.h>

 

int main( ) {

     int a  = 2, b = 5;

     if(a++ <3 || ++b >3)

          a++ ? a = a +1 : a + 2;

     else

          b__;

     printf("%d, %d|m", a,b);

    return 0 ;

}

 

▶설명

더보기

*형식

조건 ? 표현1 : 표현2 ;

조건이 참이면 표현1을 수행하고 거짓이면 표현2를 수행한다.

 

*if(a++ <3 || ++b >3)

a는 2이므로 a++<3은 true가 수행된다. ||의 좌항(a++<3)의 결과가 true이므로 우항 (++b>3)는 수행되지 않아 b는 5이다.

 

*a++ ? a = a +1 : a + 2;

a++는 true이므로 a=a+1이 수행된다.

 

*printf("%d, %d|m", a,b);

a값은 5:에서 1이 증가하고, 6:에서 1씩 두번 증가하므로 5가 출력된다. b는 초기값 그대로 5가 출력된다.

 

 

 

 

03.비트연산자

#include <stdio.h>

int main( ) {

     char c = 3;

     printf("%d\n", c << 1);

     printf("%d\n", c << 2);

     printf("%d\n", c << 3);

     printf("%d\n", c << 4);

return 0;
}

 

▶설명

더보기

*>> : 비트 값을 우측으로 지정값 만큼 이동

(예: r = a>>3; 는 우측으로 3비트 이동(2^3으로 나눈 값)

*<< : 비트 값을 좌측으로 지정값 만큼 이동 

(예: r = a << 3; 는 좌측으로 3비트 이동(2^3을 곱한 값)

 

*printf("%d\n", c << 1); 

좌측으로 1비트 이동( 3x2^1 = 6)

*printf("%d\n", c << 2);

좌측으로 2비트 이동( 3x2^2 =12)

*printf("%d\n", c << 3);

좌측으로 3비트 이동( 3x2^3 = 24)

*printf("%d\n", c << 4);

좌측으로 4비트 이동( 3x2^4 = 48)

 

 

 

04. sizeof 연산자, 형 변환

#include <stdio.h>

 

int main( ) {

     float a = 25.1f, b = 31.28f;

     double c= 35.3, d = 24.4;

     printf("[%d]", sizeof( a * b )) ;

     printf("[%d]", sizeof( b * c )) ;

     printf("[%d]", sizeof(11.1f * 1.32f)) ; 
     printf("[%d]", sizeof(13.2 * 84.4)) ; 

     printf("[%d]", sizeof(1.21f * 1.57)) ; 

     return 0 ;

}

 

 

▶설명

더보기

*sizeof( ) 연산자는 자료형, 변수, 수식의 결과 등이 차지하는 기억공간의 바이트 수를 구한다.

 

*printf("[%d]", sizeof( a * b )) ;

a와 b는 float형이므로 계산 결과도 float형이다. 따라서 4가 출력된다.

*printf("[%d]", sizeof( b * c )) ;

c와 d는 double형이므로 계산 결과도 double형이다. 따라서 8이 출력된다.

*printf("[%d]", sizeof(11.1f * 1.32f)) ; 

11.1f * 1.32f의 결과는 float형이다. 따라서 4가 출력된다.

*printf("[%d]", sizeof(13.2 * 84.4)) ; 

13.2 * 84.4는 두 피연산자 모두 double형이다. 따라서 연산 결과도 double형이므로 8이 출력된다.

*printf("[%d]", sizeof(1.21f * 1.57)) ; 

1.2f * 1.57에서 1.57이 double이므로 확대 형 변환에 의해 결과는 double형이다. 따라서 8이 출력된다.

 

 

 

05. if문

#include <stdio.h>

 

int main( ) {

     int x = 25, y = 10, z = 3;

     y = y % x * z;

     if (y == 20)

         y = 30;

     else

         y = 40;

     printf("%d", y);

     return 0 ;

}

 

 

▶설명

더보기

형식

: if(조건식)

        처리1

  else

        처리2

 

: if문 다음의 조건이 만족(참)이면 처리1을 수행하고, 만족하지 않으면 (거짓) 처리2를 수행한다.

 

*y = y % x * z; 의 결과는 30이다.

*y = 30;

*else

         y = 40;

조건이 false이므로 else문을 수행한다. 따라서 y의 값은 40이 출력된다. 

 

 

 

06.switch문

#include <stdio.h>

int main( ) {

     int c = 100;

          switch(9) {

          case 0: c+= 2; break;

          default : c = 0;

          case 2: c+= 1;

          case 8: c+= 2; break;

          case 7: c = c +4;

          }

     printf("%d\n", c);

     return 0;

}

 

 

▶설명

더보기

switch~case: switch문의 값과 일치하는 case문의 명령을 수행하고, 일치하는 값이 없으면 default의 명령을 수행한다. swich~case문을 빠져나오기 위해서 break문을 사용하는 데 case의 값에 해당하는 경우부터 break문이 있는 곳까지 수행한 후 swich 블록을 탈출한다.