반응형

C++/카루의 C++ 강좌 16

[카루의 C++ 강좌] 3-4. switch문과 [[fallthrough]], [[likely]]

다중 if문을 기억하시나요? if (조건식) { } else if (조건식) { } else if (조건식) { } else { } 그런데, 이러한 if문은 길어지면 길어질수록 보기 피곤하고 코드가 너무 길어집니다. 성적을 입력받고 다음과 같이 출력하는 프로그램을 만들어보죠. 100점이면 => A+ 출력 90 ~ 99 점이면 => A 출력 80 ~ 89 점이면 => B 출력 70 ~ 79 점이면 => C 출력 60 ~ 69 점이면 => D 출력 50 ~ 59 점이면 => E 출력 그 외이면 => F 출력 우선 성적을 입력하는 것이므로 0~100인지 검사를 먼저 해야겠죠? 따라서 코드는 이렇습니다. #include int main() { int score{}; std::cout > score; if (sc..

[카루의 C++ 강좌] 3-3. 반복문의 중첩, 무한반복과 break

반복문의 중첩 3-1에서 배웠던 반복문 for, while, do~while문을 기억하시나요? 앞으로는 do~while문은 거의 쓰지 않고 for과 while을 주로 쓸 것입니다. (그래서인지 구글은 Go언어에서 반복문을 for만 사용합니다...) 이 반복문은 중첩이 가능합니다. 구구단을 출력하거나, 흔히 예제로 많이 쓰이는 "별 찍기"도 반복문을 응용하는 것입니다. #include int main() { for (int i{2}; i

[카루의 C++ 강좌] 3-2. 조건문과 if ~ else if ~ else

오늘은 조건문을 배워보겠습니다. 예전에 배웠던 삼항 조건 연산자 기억하시나요? 그 연산자가 블록이 되었다고 보시면 쉽습니다. (조건식) ? (참일 때 실행할 식) : (거짓일 때 실행할 식); 자세히 보시면 실행할 '식'이라고 써 있습니다. 즉, 무언가 값을 반환하는 식만 가능합니다. 문장은 쓸 수 없다는 뜻이죠. 저 식에는 void가 아닌 함수 호출, 수식, 또는 변수나 상수 그 자체만 쓸 수 있습니다. return문 등은 쓸 수 없습니다. 그리고 무엇보다 여러 문장을 쓸 수 없다는 게 단점이죠. ​ 이걸 if~else 문으로 바꾸어보겠습니다. if (조건식) { // 참일 때 실행할 '문장' } else { // 거짓일 때 실행할 '문장' } 위와 같이 표현할 수 있습니다. 일단 예제 코드부터 살펴보..

[카루의 C++ 강좌] 3-1. 반복문과 for, while, do~while

드디어 재미있는 시간이 왔습니다. 이제 본격적으로 배열과 논리 연산자를 사용해 볼 겁니다. 반복문은 특정 구문을 여러 번 실행하기 위해서 사용합니다. 예를 들어 1부터 10까지 출력하는 프로그램을 만들 때, int n{1}; std::cout > input[5]; std::cin >> input[6]; std::cin >> input[7]; std::cin >> input[8]; std::cin >> input[9]; 배열 첨자에 숫자 대신 i 를 넣고 for문을 사용하여 위의 열 줄을 단 세 줄로 줄인겁니다. 중간에 오타가 날 일도 없죠. ​ 자 그런데, 이보다 더 편한 방법이 있습니다. 바로 범위 기반 for문입니다. for (auto n : array) 이런 식으로 사용합니다. 여기서 auto에는 ..

[카루의 C++ 강좌] 2-4. 변수의 초기화 I

초기화는 변수에 처음 값을 대입하는 행위라고 했습니다. 초기화를 세분화하면, 값을 통한 초기화, 직접 초기화, 복사 초기화, 리스트 초기화, Aggregate 초기화, 참조 초기화가 있습니다. 어려운 건 아니니 아래만 보시면 금방 이해하실 겁니다. Value initialization (값을 통한 초기화 - C++03부터) 임시 객체를 만들 때에도 사용하는 방법입니다. 임시 객체는 나중에 설명을 할 테니 일단 아래 코드를 봐 주세요. int iVar = int(); double dVar{}; float fVar = float{}; 위 변수들은 모두 기본값으로 초기화됩니다. 값을 지정하려면 소괄호 또는 중괄호 안에 값을 넣으면 됩니다. ​ 변수의 초기화에서 소괄호와 중괄호는 그 역할이 같고, 웬만하면 중괄..

[카루의 C++ 강좌] 2-3. 연산자 II, 연산자 우선순위

저번 시간에 배운 연산자는 복습하셨나요? 이제 더 난이도를 올려보겠습니다. 비트 연산자 우리는 10진법을 기본으로 사용하지만, 컴퓨터는 이진법이 기본인 거 아시죠? 0과 1을 사용하죠. _ _ _ _ _ _ _ _ 이렇게 8칸이 있으면 각 칸에서 1 또는 0을 표현할 수 있습니다. 각 칸을 비트(Bit)라고 하고 8비트가 모인 걸 1바이트(1byte = 1B)라고 합니다. 1바이트, 2바이트, 4바이트 변수가 이런 형식입니다. ​ 각 비트의 자리수는 각각 128/64/32/16 / 8/4/2/1을 나타냅니다. 즉 이진수 0000 0011은 2와 1 자리에 비트가 있으니 2+1 = 3입니다. 이진수 0010 0010은 32와 2 자리에 비트가 있으니 32+2 = 34입니다. ​ unsigned char은 ..

[카루의 C++ 강좌] 1-6. 전처리기 - include, define

오늘은 C++의 문법에서 조금 벗어난, 전처리기에 관해 이야기를 해 보겠습니다. 전처리기 우리가 C++ 프로그램을 만들면 단순히 .cpp 파일이 .exe파일로 변하는 것이라고 생각할 수도 있는데 그렇지 않습니다. 우선 '전처리기'가 #이 붙은 모든 문장을 처리합니다. 이 친구는 컴파일러가 아니기 때문에 C++의 문법을 따르지 않아요. 전처리기의 작업이 끝나면, 컴파일러가 .cpp 파일을 .o 또는 .obj의 파일 형태로 컴파일합니다. 그 다음 링커가 .obj 파일을 묶어서 하나의 .exe 파일을 만들어냅니다. 우리는 C++ 프로그램을 작성할 때마다 위와 같은 과정을 반복합니다. ​ 전처리기가 담당하는 전처리 지시문에는 include, define, region, pragma, if, ifdef 등이 있는..

반응형