c언어의 조건식 if
int main()
{
if (조건식)
{
조건식이 참일때
- 코드 -
}
}
int main()
{
int num;
scanf("%d", &num);
if (num > 0)
{
printf("조건식이 참 입니다. %d\n", num);
- 코드 -
}
}
위 코드에서 scanf()로 터미널에서 0 이상의 정수를 입력한다면 if문의 조건식(num > 0)이 참이 되기 때문에 if문 안의 코드가 실행되어
조건식이 참 입니다. (입력값)
이 표준출력 될 것이다.
if문의 사용할때 뒤에 세미콜론(;)을 붙이면 안된다.
if (조건식);
{
printf("조건식이 참 입니다.\n");
}
위 코드와 같이 조건식 뒤에 ;을 붙이고 중괄호({})를 시작하면
if(조건식);
printf("조건식이 참 입니다.\n");
if문과 printf문이 전혀 관계없는 상태가 되므로 if문의 조건식이 '거짓'이어도 printf문이 실행되어 출력값이 표준출력 됩니다.
why? c언어는 코드를 중괄호({})를 감싸도 정상실행되기 때문에 컴파일 오류가 안 남
if문에서 실행할 코드가 한 줄 이하일때 중괄호({})를 생략할 수 있다.
if (num > 0) printf("num이 0 이상 입니다.");
or
if (num > 0)
printf("num이 0 이상 입니다.");
만약 실행할 코드가 두개 이상일 때 중괄호를 생략한다면
if (num > 0)
printf("num이 0 이상 입니다.");
printf("num이 %d이므로 0 이상입니다.",num);
num이 0이므로 0 이상입니다.
num = 0 이어도 2번째 printf문은 출력이 된다.
if문의 (조건식)에서 비교연산자를 사용하여 비교가 참일때 코드를 실행할 수 있다.
int main()
{
float num1 = 1.31f;
char c1 = 'a';
if (c1 == 'a')
printf("c1이 a 입니다");
if (num1 == 3.14;)
printf("num1이 3.14입니다.);
}
비교할때 비교할 변수와 값, 변수와 변수의 자료형을 맞춰주어야 한다.
if문의 조건식에서 참과 거짓을 구분할 때 0과 1로도 구분 가능하다.
조건식의 결과가 0일때 거짓, 그외 음수와 양수들은 참이고 실수도 0.0f는 거짓 그 외의 실수들은 참이다.
if (num = 10)
if의 조건식에 '=='이 아닌 '='만 쓴다면 num에 10을 할당하고
조건식에서 num은 10이 되므로 if문이 무조건 참이 된다.
num이 10인지 비교하고 참과 거짓의 조건문이 아닌 num에 10을 할당하여 참일 때 코드만 실행되므로 원하는 조건문 사용이 아니기 때문에 잘 구분하여야 한다.
if문의 (조건식)에 비교연산자를 사용할때
if (10 == num)
처럼 비교할 숫자를 먼저쓰고 이후에 변수를 사용하면 실수를 예방할 수 있다.
if (num = 10)을 사용하면 컴파일시 오류가 안 나지만
if (10 = num)을 사용하면 컴파일시 오류가 나기때문에 빠르게 오류를 찾아서 해결할 수 있다.
if문은 분기(branch)가 가능한 문법으로 조건식이 참, 거짓 일때 실행할 코드를 작성할 수 있다.
int main()
{
int num = 10;
if (num == 10)
{
printf("num이 10 입니다.\n");
}
else
{
printf("num이 10이 아닙니다.\n");
}
}
num이 10이면 if문의 printf문이 실행되고 10이 아닐때면 else문의 printf문이 실행된다.
else문도 if문처럼 else바로 뒤에 세미콜론(;)을 사용하면 안된다.
실행될 코드가 2줄 이상일 때 중괄호({})를 생략하면 안된다.
하나의 if문을 사용할때 하나의 조건이아닌 여러개의 조건이 필요할 때 쓰는 방법이 있다.
ex1)
if (조건식1 || 조건식2) - 조건식1 이거나 조건식2 일때 실행
if (조건식1 && 조건식2) = 조건식1 이고 조건식2 일때 실행
or
if (조건식1)
if (조건식2)
실행 코드
- 논리적으로 큰 if문 안에 if문을 또 사용하여 위의 조건을 구현할 수 있다.