Tech Blog/C and C++

C언어 논리연산자와 콤마 연산자

EXPRESSIONS HAVE POWER 2021. 6. 7. 21:56

* 논리연산자(&&, ||, !)

연산자 연산자의 기능 결합방향
&& A와 B (AND) -->
|| A 또는 B (OR) -->
!A <--
OperatorSeven.c

#include <stdio.h>

int main(void)
{
    int num1=10;
    int num2=12;
    int result1, result2, result3;

    result1 = (num1==10 && num2 == 12);
    result2 = (num1<12 || num2 >12);
    result3 = (!num1);

    printf("result1: %d \n", result1);
    printf("result2: %d \n", result2);
    printf("result3: %d \n", result3);
    return 0;
}

실행결과

result1: 1
result2: 1
result3: 0

result3  = (!num1); 

이 문장은 논리 NOT 연산의 예를 보여 준다. num1에 1이 저장되어 있다면 result 3 에는 0이 저장되고 , num1에 0이 저장되어 있다면, result 3에는 1이 저장된다. 그렇다면 num1에 0도 1도 아닌 다른 값이 저장되어 있다면?

- "C언어는 0이 아닌 모든 값을 '참(TRUE)으로 간주한다." 0은 거짓 그 외 숫자는 모두 참이다.

그외 숫자는 결과로 '참'이 반환되어야 해서 1이 반환되었고, result 3에 0이 저장 된 이유이다. 

 

* 콤마연산자 (,)

 

콤마 연산자는 둘 이상의 변수를 동시에 선언하거나, 둘 이상의 문장을 한 행(line)에 삽입하는 경우 사용되는 연산자이다.

CommaOp.c

#include <stdio.h>

int main(void)
{
	int num1=1, num2=2;
    printf("Hello "), printf("world! \n");
    num1++, num2++;
    printf("%d ", num1), printf("%d ", num2), printf("\n");
    return 0;
}

실행결과

Hello world!
2 3