1 minute read

C++ 4강

프로그래밍에 정답은 없다. 하지만 최대한 효율적으로 코드를 짜야한다.

[TOC]

반복문

while문 vs do while문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(){
    
    int i = 10;
    
    while(i < 1){
        printf("while : %d\n", i);
    }
    
    do{
        printf("do~while : %d\n", i);
    }while(i < 1);
}
cs

출력값 : do~while : 10

👉 조건식을 확인하기 전에 루프 내의 문장을 무조건 한번은 실행해야 한다면 do ~ while문을 사용한다.

For문

  • 단일 for문
  • 다중 for문

1
2
3
for(초기값; 조건식; 변화식){
    실행문;
}
cs

평소 웬만한 선언은 for()초기값 안에 전부 설정한다.

ex1)

1
2
3
for(int i = 1; i < 100; i++){
    printf("Hello World!\n");
}
cs

if문과 같게 실행문이 한 줄일경우, 중괄호{ } 생략이 가능하긴 하다.

ex2)

1
2
3
4
5
int count;
scanf("%d"&count);
    for(int i = 1; i < count; i++){
        printf("Hello World! %d\n",i);
    }
cs

char cal = ‘+’; 👉 캐릭터(문자)는 문자열이 아니므로 따옴표 하나만! ‘ ‘

3의 배수 합계 구하는 식으로 생각 달리 해보기

1)

1
2
3
4
5
6
for(i=1; i<=100; i++){
    if(i%3 == 0){
        sum = sum + i;
        printf("%d ", i);
    }
cs

2)

1
2
3
4
    for(i=0; i<=100; i+=3){
            sum = sum + i;
            printf("%d ", i);
    } 
cs

break; 👉 switch case문 뿐만 아니라 for문에도 break;를 사용할 수 있다!

오늘 수업 전 예습노트

비교, 논리, 삼항 연산자

1. 비교 연산자

C언어의 부등 연산자는 !== 가 아닌 != 로 표기한다!

우선순위 연산자 설명 결합 법칙(방향)
3 *, /, % 곱셈, 나눗셈, 나머지
4 +, - 덧셈, 뺄셈
5 «, » 비트를 왼쪽으로, 오른쪽으로 시프트
6 <, <=, >, >= 작음, 작거나 같음, 큼, 크거나 같음
7 ==, != 같음, 다름
8 & 비트 AND
9 ^ 비트 XOR
10 | 비트 OR
11 && 논리 AND
12 || 논리 OR
13 ? : 삼항 연산자

비트 연산자👉 문자를 0000 0000 의 비트 형식으로 표현하여 연산한다.

ex1)

1
2
3
4
5
    unsigned char num1 = 3;     //  3: 0000 0011
    unsigned char num2 = 24;    // 24: 0001 1000
 
    printf("%u\n", num1 << 3);  // 24: 0001 1000: num1의 비트 값을 왼쪽으로 3번 이동
    printf("%u\n", num2 >> 2);  //  6: 0000 0110: num2의 비트 값을 오른쪽으로 2번 이동
cs

<시프트 연산자="">

1의 값을 해당 방향 «(좌), »(우) 로 이동시킴. 이동 후 공간은 0으로 채움

« 👉 좌항 * 2^우항

>> 👉 좌항 / 2^우항

ex2)

1
2
3
4
5
6
    unsigned char num1 = 1;    // 0000 0001
    unsigned char num2 = 3;    // 0000 0011
 
    printf("%d\n", num1 & num2);    // 0000 0001: 01과 11을 비트 AND하면 01이 됨
    printf("%d\n", num1 | num2);    // 0000 0011: 01과 11을 비트 OR하면 11이 됨
    printf("%d\n", num1 ^ num2);    // 0000 0010: 01과 11을 비트 XOR하면 10이 됨
cs

01과 11을 xor로 연산하면, 첫자리 0과 1은 다르므로 1, 둘째자리 1과 1은 같으므로 0 출력, = 10.

^ (비트 XOR)👉 같은 위치의 두 비트가 서로 다를 때 1의 값을 출력.

2. 논리 연산자

3. 삼항 연산자

1
비교할 값이나 변수  ?  참일 때의 값  : 거짓일 때의 값 ; 
cs

예제1)

1
num2 = (num1 == 10) ? 100 : 200 ; 
cs

num1 이 10일 때 (true)👉 num2의 값은 100으로 할당된다.

num1 이 10이 아닐 때 (false)👉 num2의 값은 200으로 할당된다.

삼항 연산자 응용하기1)
1
printf("%s\n", num1 == 10 ? "10입니다." : "10이 아닙니다.");
cs

num1 이 10일 때 (true)👉 printf(“10입니다.”);

num1 이 10이 아닐 때 (false)👉 printf(“10이 아닙니다.”);

Updated:

Leave a comment