if 조건문 if conditional statement 본문
if 조건문 (if conditional statement)
C++에서 가장 기본적인 조건문은 if 명령문이다
if(expression) //conditional expression
statement
or
if(expression) //conditional expression
statement
else
statement2
위에서 'expression'을 조건식(conditional expression)이라고 한다.
조건식이 true (0이 아님)로 평가되면 if문이 실행된다.
표현식이 false로 평가되면 else 문이 실행된다. ( else 문이 있는 경우)
if 문 밑에 indenting(들여쓰기)이 되어있는데 이건 자동으로 해주는거다.
이렇게 바로 문장을 쓰기 보다는 { } 중괄호로 영역을 싸주는게 일반적이다.
암시적 블록 (Implicit blocks)
if 문 또는 else 문의 명령문 부분에 블록을 선언하지 않으면 컴파일러가 암시적으로 선언한다.
if(expression)
statement
else
statement2
실제로는 다음과 같다
if(expression)
{
statement
}
else
{
statement2
}
초보 프로그래머는 다음과 같은 작업을 시도하려 한다.
#include <iostream>
int main()
{
if(1)
int x = 5;
else
int x = 6;
std::cout << x;
return 0;
}
컴파일러는 식별자 x가 정의되지 않은 오류를 생성하므로 컴파일되지 않는다.
위의 예제는 다음과 같다.
#include <iostream>
int main()
{
if(1)
{
int x = 5;
}//변수 x는 여기서 소멸한다
else
{
int x = 6;
}//변수 x 는 여기서 소멸한다
std::cout << x; //x는 여기서 정의되지 않는다.
return 0;
}
위 예제에서 변수 x 는 블록 범위를 가지고, 블록의 끝에서 소멸한다.
std::cout 행에 도달할 때 까지 x는 존재하지 않는다.
if문 연결하기
if-else 문을 함께 연결 할 수 있다.
첫째, x > 10을 평가한다.
true 이면 "x is greater thaan 10"이 출력되고 완료된다.
그렇지 않으면 else문이 실행된다.
해당 else문은 중첩된 if 문을 포함하고 있다.
중첩된 if문 안에서 x < 10을 평가하게 된다.
여러 개의 명령문 실행
여러 개의 명령문을 실행하기 위해 블록을 사용할 수 있다.
if 문 뒤에 오는 문장이 하나 일 경우에는 중괄호를 생략할 수 있지만
두개이상 넣을 때에는 두 줄이 동시에 실행되게 하려면 꼭 중괄호로 묶어주어야 한다.
파이썬에서는 띄어쓰기로 묶지만 C++에서는 중괄호로 묶어준다.
초보 프로그래머가 할 수 있는 실수 예제
bool 계산을 할 때
if 문 괄호안에 내부적으로 0 이 아니면 true 이다.0이면 false 이다.
while 문에서도 비슷한 형태를 사용한다.
초보 프로그래머들은 블록{}이 안보이기 때문에
전역인가 보다 혹은 main 함수안에서는 전부 작동하는가 보다 착각 할 수 있다.
하지만 얘는 내부적으로 { }가 있다고, if 문 밑에 괄호가 있다고 생각해야 한다.
물론 if 문 아래 블록에서 변수를 선언하지 말라는 뜻은 아니다.
안에서 복잡한 일을 하게 될 때는 변수를 선언할 수 있다.
그런데 이 변수의 scope 와 duration이 if문 밑의 블록을 벗어 나지 못한다는 의미이다.
if문 중첩 (Nesting if statements)
if문을 다른 if 문 내에 중첩 할 수 있다.
이 경우에는 x가 10 이상이고
10이상인것 중에서 x가 20이상이니까
10이상이고 20보다 작은 것이 else 에서 출력이 된다.
else가 10이상이 아닐때로 걸리게 하고싶을때는 중괄호로 막아야한다.
문법상 else는 가장 가까이에 있는 if 에 붙게 되어있다.
그래서 Indenting이 엉망인 상태에서
코딩을 우연히 이렇게 했더라도
이 else는 표시된 if 문에 붙은 걸로 작동을 한다.
인덴팅이 이렇게 되어있는것은 잘못되어있는 거니까
if문의 논리 연산자 사용하기
또한, if문에서 논리 연산자를 사용하여 여러 조건을 함께 확인 할 수 있다.
if문의 삼항 연산자 사용하기
정수 두개를 입력받고 둘 중에 작은 것을 입력하는 입력하는 함수를 만들어보자.
if문에 null statement 넣기
초보 프로그래머들이 실수하기 좋은 것은 null statement라고 해서
아예 실행시킬 내용을 넣지 않는 경우도 있다.
null statement == 아무것도 하지 않는 것
문제가 생기는 상황을 예로 들자면
if문에서 프로그램 종료
if 문은 프로그램을 긴급하게 종료 시킬 때 쓸 수 있다.
'💘 C++ > 흐름제어' 카테고리의 다른 글
for 문 for statement (0) | 2022.04.26 |
---|---|
do-while 문 do-while statement (0) | 2022.04.26 |
while 문 while statement (0) | 2022.04.25 |
goto 문 goto statement (0) | 2022.04.25 |
switch 문 switch statement (0) | 2022.04.24 |