본문 바로가기

C++

C++ 배우기 3(비교 연산자, if문)

스코프 { }

위 사진과 같이 int main() 다음에 오는 대괄호를 스코프라고 부른다. 이는 int main()의 범위를 잡아주는 역할을 한다.

물론 int main()뿐만 아니라 다른 곳에도 많이 활용하고 있다.


변수의 규칙

저번에 알아봤듯이 변수는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 말한다.

그리고 이 안에 저장된 값은 언제든 변경할 수 있다.

또한 자료형을 통해 정수형 int, char, short, long, 실수형 float, double 변수 또한 알아보았다.

 

변수의 이름은 본인이 원하는대로 자유롭게 지을 수 있다. 때문에 변수가 하는 역할을 잘 나타낼 수 있도록

짓는 것이 가장 좋은 방법이다.

하지만 변수의 이름을 생성할 때에도 몇 가지 지켜야 할 규칙이 있다.

 

1. 변수의 이름은 영어 대소문자, 숫자, 언더스코어(_)로만 구성할 수 있다.

2. 변수의 이름은 숫자로 시작할 수 없다.

3. 변수의 이름 사이에 공백을 포함할 수 없다.

4. 변수의 이름은 프로그램에서 이미 정의된 키워드(즉, int, short, float 같은 것들)는 사용할 수 없다.

 

1번을 예를 들자면, int am;와 int Am;는 서로 다른 변수라고 할 수 있다.


지역변수 / 전역변수

지역 변수(local)이란, 범위(스코프) 내에 선언된 변수를 말한다. 위의 노란색 원처럼 int main() 안에 선언된 것을 의미한다.

하지만 지역변수의 특성상, int main() 안에서만 사용이 가능하고, 외부에서는 사용이 불가능하다.

 

전역 변수(global)이란, 범위 밖에 선언된 변수를 말한다. 위의 파란색 원처럼 int main() 바깥에 선언된 것을 의미한다.

지역변수와 다르게 전역 변수는 int main()과 같이 다른 범위 안에서도 호출이 가능한 것이 특징이다.

 

그리고 저번에 말했듯이 변수 선언에는 규칙이 있다. 선언-정의-호출의 순서를 지켜서 사용해야 한다.

위 그림의 빨간색 원과 같이 호출-선언 순으로 하면 오류가 발생하게 된다.


namespace

namespace이름을 붙여 하나의 공간을 만들어낼 수 있다.

위와 같이 A라는 namespace를 만들어 그 안에 int형 변수 d를 선언했다.

그런데 변수 d를 int main() 안에 호출하기 위해서는 A :: d;형식의 코드를 넣어야 한다.

 

여기서 ' :: '는 범위 접근 연산자라고 부르는데, 한마디로 namespace에 접근할 수 있게 연결해주는 역할을 한다.

우리는 여기서 처음에 썼던 std :: cout / std :: cin을 떠올리게 된다. 바로 namespace std에 접근하여 cout과 cin을

사용한다는 뜻이었던 것이다.

하지만 우리는 더 이상 std :: 를 쓰지 않았다. 바로 using namespace std;를 넣었기 때문이다.

이는 namespace std를 전역으로 풀어서 생략이 가능하도록 만들어 주었던 것이다.

 

같은 예시로, using namespace A;를 넣어주면 더이상 A :: 를 넣지 않아도 되는 것과 같다.


비교 연산자

앞서 자료형에서 bool형에 대해 배웠다. 값이 0이면 false, 1이면 true를 나타냈다.

이는 비교 연산자에서도 같은데, 두 식을 비교하여 값이 참이면 1(true), 거짓이면 0(false)을 반환해준다.

 

비교 연산자는 >, <, ==, != 들이 존재한다. 우리가 수학 시간에 배웠던 것처럼 서로 어느 게 큰지, 같은지를 비교해준다.

그런데 여기서 !는 부정을 뜻하는데, 예를들어 !(3 < 5)는 5가 더 큰 것이 참이므로 1이 반환되겠지만 !에 의해

부정되어 0으로 값이 바뀌게 되는 역할이다.


 

조건문 if

if(조건문) { ~ }괄호 안의 조건이 참인지 거짓인지 판별 후에 실행 여부를 결정하는 역할을 한다.

위의 사진을 예로 들면, (3 > 5) 조건은 거짓이라 0이 반환된다. 그럼 if문은 스코프 안의 내용을 출력하지 않고

다음으로 넘겨버린다.

 

그런데 이런 if문을 다중으로 사용할 수 있는데 간단하게 다중 if문이라 부른다.

다중 if문에는 2가지 유형이 있는다.

if를 여러번 선언

위와 같이 if를 여러 번 선언하여 사용하는 방법이다. 제일 위에서부터 if 조건문을 검사하며,

참일 경우 출력 후 다음으로 넘어가고, 거짓일 경우 바로 다음으로 넘어가게 된다.

하지만 여러 개의 조건문을 하나하나 다 확인해야 하기 때문에 비효율적이라 생각된다.

 

따라서 else if를 사용하게 된다.

else if를 사용

이처럼 else를 사용하게 되면 위에서부터 하나씩 조건을 확인하다가 참일 경우 출력 후에 나머지 else는 모두 건너뛴다.

하지만 무조건 다중 if문은 else if만 사용하는 것은 아니므로 두 방법의 차이점을 알고 필요한 곳에 적절히 쓰도록 하자.