if 광고전화인가?
{
전화를 끊고, 차단 목록에 등록한다.
}
else
{
계속 통화한다.
}
else는 if 조건문 뒤에 오며 단독으로 사용할 수 없다.
else에 ;을 붙이면 조건식의 결과와는 관계없이 항상 실행된다.
;이 else와 if의 관계를 끊어버리기 때문이다.
else도 if와 마찬가지로 실행할 코드가 한 줄이면 중괄호를 생략 가능하다.
그러나 실행할 코드가 두 줄 이상일 때 중괄호를 생략하면 아래와 같이 컴파일 에러가 발생한다.
if의 코드들은 중괄호로 묶고, else의 코드들은 중괄호로 묶지 않는 경우에는
else의 두번째 코드들부터는 조건식에 상관없이 출력이 된다.
else의 중괄호 없는 코드는 첫번째만 조건식에 인식되는 듯 하다.
C언어에서는 if는 0일때 거짓, 0이 아닐 때 참으로 동작한다.
if에 2를 넣으면 참으로 출력된다. -4, -3 등 음수값도 참이다. 0이 아닌 수는 모두 참이다.
실수도 마찬가지로 0.0f는 거짓이며 0.0f가 아닌 값들은 모두 참이다.
할당 연산자(=)와 등호(==)를 헷갈리지 말자.
할당 연산자(=)를 넣게되면 num1에 10을 새로 할당한다. 이 경우 num1은 0이 아닌 수이기 때문에
참의 값이 나오게 된다.
if (num1 = 10) ← num1에 10을 할당해버린다. 그런고로 참이 나온다.
if (num1) ← num1을 그냥 넣는다. num1에 들어있는 값으로 판단하게 된다. 0이라면 거짓, 그 이외는 참.
if (10) ← 그냥 10이다. 0이 아닌 수이므로 참이 나온다.
할당 연산자 실수를 방지하는 방법은
프로젝트 속성에서 경고 수준을 높여준다.
이 경우 조건식 안에 할당이 있을 경우
이러한 경고 메세지가 나오게 된다.
또는
등호 연산자(==)는 앞 뒤가 바뀌어도 상관없다. 하지만 리터럴은 값을 할당(저장)할 수 없기 때문에
이렇게 해준다면 오류를 막을 수 있다.
조건식을 여러개 지정해보자.
인터넷 포털의 중고나라에 글을 올리려면 포털사이트의 회원이면서
중고나라의 회원이어야 한다.
if 포털사이트 회원인지? 그리고 중고나라 회원인지?
{
글쓰기 화면 표시
}
else
{
회원가입 하고 오세요.
}
여기서 &&는 논리연산자(AND)이다.
그렇다면 if 안에 if가 또 들어갈 수 있을까??
가능하다!!
if 안의 num1이 같다면 if 내부의 if에서 num2를 판단한다. num1이 거짓이라면 바로 false로 가게 된다.
이런 식으로 간다. 결국에는 && 논리연산자를 쓴 것과 다르지않다.
일단 이해를 하고 넘어간 것에 의의를 두자!
'C, C++' 카테고리의 다른 글
오늘 공부한 C언어(비교 연산자와 삼항 연산자 사용하기) (0) | 2022.03.06 |
---|---|
오늘 공부한 C언어(else if를 사용하여 여러 방향으로 분기하기) (0) | 2022.03.01 |
오늘 공부한 C언어(if 조건문으로 특정 조건일 때 코드 실행하기) (0) | 2022.02.27 |
오늘 공부한 C언어(자료형의 확산과 축소) (0) | 2022.02.27 |
오늘 공부한 C언어 (나머지 연산하기) (0) | 2022.02.24 |