C++ 관계 연산자 | C++ 자습서 22

C++ 관계 연산자

값에 대한 비교를 하기위해 관계 연산자(relational operator)를 사용할 수 있습니다.

값이란 데이터를 말하는 것 입니다. 그런데 데이터형은 다양하기 때문에 비교관계도 다양할 수 밖에 없습니다.

C++에서는 우리가 산수적으로 알고 있는 크다 작다 같다 연산자를 사용하여 비교할 수 있습니다.

관계 연산자를 예제로 사용해 보겠습니다.

#include <iostream>

using namespace std;

int main()
{

	int num1 = 3;
	int num2 = 0;
	int num3 = 5;

	cout << "\n[----- less than < ----]" << endl;

	for (int i = 0; i < num1; i++)
	{
		cout << i << " is less than " << num1 << endl;
	}

	cout << "\n[----- greater than < ----]" << endl;
	
	for (int i = 3 ; i > num2; i--)
	{
		cout << i << " is greater than " << num2 << endl;
	}	
	
	cout << "\n[----- equal to == ----]" << endl;
	
	for (int i = 0 ; i < num3; i++)
	{
		cout << i << " is less than " << num3 << endl;

		if(i == num1)
			cout << i << " is equal to " << num1 << endl;
	}

    return 0;
}
[----- less than < ----]
0 is less than 3
1 is less than 3
2 is less than 3

[----- greater than < ----]
3 is greater than 0
2 is greater than 0
1 is greater than 0

[----- equal to == ----]
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
3 is equal to 3
4 is less than 5

for 문의 조건식에서 사용합니다. for문에서는 조건식이 거짓(False)이 될 때까지 실행하므로 매번 실행 결과를 확인할 수 있습니다.

기본적인 것들은 중학교 수학 기초에서 배웠던 것들 입니다. 크다 작다 같다 아니다 정도를 비교할 수 있으면 충분합니다.

(a < b) a는 b보다 작다. (a==b) a는 b와 같다. (a > b) a는 b보다 크다.

== 는 ‘와 같다’ 입니다. = 는 할당 연산자(assignment statement)로 차이가 있습니다.

관계 연산자(relational operator)

관계 연산자는 두 피연산자의 관계를 비교해서 참이면 true 거짓은 false 값을 리턴합니다.

연산자내용
a < ba는 b보다 작다
a <= ba는 b보다 작거나 같다
a == ba는 b와 같다
a > ba는 b보다 크다
a >= ba는 b보다 크거나 같다
a != ba는 b와 같지 않다
관계 연산자

관계 연산자도 하나의 값을 리턴하는 표현식입니다. a < b 지만 (10-5) < (7+6) 과 같이 식이 들어갈 수도 있고 함수의 반환값이 들어갈 수도 있습니다.

식이 종료되고 반환되는 bool 값을 잘 사용할 줄 알아야 합니다.

strcmp 문자열 비교 함수

C스타일 문자열 비교함수를 사용하여 보겠습니다. for 문에서 조건식에 0이 아닌 값은 true 로 해석됩니다.

이것을 이용하면 함수의 반환값을 루프의 조건으로 사용할 수 있습니다. strcmp () 를 사용하면 문자열이 같지 않으면 true 같으면 false 를 사용합니다. 즉 문자열을 찾을 때 false로 종료하도록 만들어진 함수입니다.

조건 검사 표현식에 isOkay() isSomething() 처럼 사용하는 것은 프로그래머들의 전통입니다.

a < 10 와 같은 표현식도 좋지만 함수를 사용하면 의미가 명확해지고 재사용이 가능하다는 장점이 있습니다.

#include <iostream>
#include <cstring>

using namespace std;


int main()
{

	char word[5] = "?iwi";

	for (char ch = 'a'; strcmp(word, "kiwi"); ch++) {
		cout << word;
		cout << " => " << strcmp(word, "kiwi") << endl;
		word[0] = ch;
	}

	cout << "after finishing loop -> " << word << endl;

	return 0;
}
?iwi => -1
aiwi => -1
biwi => -1
ciwi => -1
diwi => -1
eiwi => -1
fiwi => -1
giwi => -1
hiwi => -1
iiwi => -1
jiwi => -1
after finishing loop -> kiwi

C++ string 클래스 문자열 비교

string 객체를 사용한 문자열 비교가 훨씬 직관적이고 C++ 을 사용하면 이쪽을 쓰게 될 것입니다.

word != “kiwi” 는 관계연산자 오버로딩을 통해서 문자열이 같으면 0을 다르면 1을 반환하도록 설계되있습니다. 즉 문자열이 같을 때까지 for 루프를 돌릴 수 있습니다.

#include <iostream>
#include <cstring>

using namespace std;


int main()
{

	string word = "?iwi";

	for (char ch = 'a'; word != "kiwi"; ch++) {
		cout << word;
		cout << " => " << (word != "kiwi") << endl;
		word[0] = ch;
	}

	cout << "after finishing loop -> " << word << endl;

	return 0;
}
?iwi => 1
aiwi => 1
biwi => 1
ciwi => 1
diwi => 1
eiwi => 1
fiwi => 1
giwi => 1
hiwi => 1
iiwi => 1
jiwi => 1
after finishing loop -> kiwi

문자열을 비교하는 루프는 카운팅 루프가 아닙니다. for 보다는 while에 더 어울리는 문법일지 모르겠습니다. 다만 for 문의 조건 검사 표현식을 함수가 대체할 수 있다는 것은 하나의 응용방법입니다.

요약

C++ 관계 연산자에 대해서 알아봤습니다.

표현식에서 사용하는 방법들은 여러가지가 있으니 개념을 잘 잡도록 합니다.

참고문서

C++ Relational and Logical Operators (With Examples)

C++ Relational Operators – Tutorialspoint

C++ | if 문 | 관계연산자 | 논리연산자

1 thought on “C++ 관계 연산자 | C++ 자습서 22”

  1. you are in reality a excellent webmaster. The website loading velocity is incredible.
    It seems that you’re doing any unique trick. In addition, The contents are masterwork.
    you’ve performed a great process on this matter!

    응답

Leave a Comment