C++에서는 비교 연산자를 사용해 값을 비교할 수 있어요.
| 비교 | 연산자 |
|---|---|
| 같음 | == |
| 같지 않음 | != |
| 작음 | < |
| 작거나 같음 | <= |
| 큼 | > |
| 크거나 같음 | >= |
이런 비교의 결과는 항상 불리언 값이에요.
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
== 연산자와 != 연산자는 각각 어떤 값이 다른 값과 같은지, 같지 않은지를 확인해요.
몇 가지 흔한 예를 볼까요?
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
나머지 연산자는 어떤 값이 다른 값보다 큰지(>), 크거나 같은지(>=), 작은지(<), 작거나 같은지(<=)를 확인해요.
이런 비교는 숫자와 문자열에 사용할 수 있어요.
문자열을 비교할 때는 사전 순서(사전식 순서라고도 해요)를 따라요.
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
C++의 조건문은 다른 언어의 조건문과 비슷해요.
모든 조건 연산의 기반 타입은 bool 타입이고, true 또는 false 값을 가질 수 있어요.
조건문은 여러 조건을 확인하기 위한 흐름 제어 수단으로 자주 사용돼요.
if 문을 사용하면, 조건이 true일 때 코드를 실행할 수 있어요. 예를 들면 이렇게요:
std::string value{"val"};
if (value == "val") {
return "was val";
}
경우가 두 개 이상인 상황에서는 else if와 else 문을 사용해 여러 if 문을 이어 붙일 수 있어요.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
C++17부터는 if 문에 짧은 초기화 문을 함께 넣어, if 문에서 사용할 하나 이상의 변수를 초기화할 수 있어요.
예를 들면 이렇게요:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
참고: 초기화에서 만든 변수는 if 문이 끝난 뒤에는 접근할 수 없어요.
이 연습 문제에서는 차량 구매를 준비하는 데 도움이 되는 코드를 작성해요.
과제는 세 가지예요. 운전면허가 필요한지 판단하는 과제, 두 차량 중에서 선택하도록 돕는 과제, 그리고 중고 차량의 적정 가격을 추정하는 과제예요.
차량 종류에 따라 운전면허가 있어야 운전할 수 있는 경우가 있어요.
"car"와 "truck" 종류만 면허가 필요하고, 나머지는 면허 없이 운전할 수 있다고 가정해요.
차량 종류를 문자열로 받아, 그 종류의 차량에 면허가 필요한지를 나타내는 불리언을 반환하는 needs_license(kind) 함수를 구현해요.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
구매할 수 있는 차량들의 선택지를 검토해요.
두 가지로 좁혔지만 최종 결정을 내리려면 도움이 필요해요.
이를 위해, 차량 두 대를 인자로 받아 사전순으로 앞서는 선택지를 포함한 결정을 반환하는 choose_vehicle(option1, option2) 함수를 구현해요.
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
반환되는 문자열은 "<CHOSEN_VEHICLE> is clearly the better choice." 패턴을 따라야 해요. 여기서 <CHOSEN_VEHICLE>은 전달된 인자 중에서 선택한 차량이에요.
이제 결정을 내렸으니, 판매점에서 공정한 가격을 지불하는지 확인하고 싶어요. 중고 차량 구매에 관심이 있으니, 가격은 차량이 얼마나 오래됐는지에 따라 달라져요. 대략적으로 추정해 보면, 차량이 3년 미만이면 새 차였을 때의 원래 가격의 80%라고 가정해요. 10년 이상이면 50%예요. 3년 이상 10년 미만이면 원래 가격의 70%예요.
if, else if, else를 사용해 이 로직을 적용하는 calculate_resell_price(original_price, age) 함수를 구현해요 (연습하고 싶다면 다른 방법도 있어요).
이 함수는 차량의 원래 가격과 연식을 인자로 받아 판매점에서의 예상 가격을 반환해요.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
참고: 반환 값의 타입은
double이에요.
Exercism에 가입하고 C++ 트랙을 개념 19개연습 문제 100개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.