C++4강
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이 아닙니다.”);
Leave a comment