본문 바로가기

Code.D IT 강좌/C언어

[C언어 강좌] 증감 연산자/관계 연산자/논리 연산자

C언어 강좌

증감 연산자

피연산자의 값을 증가(+1)시키고 감소(-1)시키는 연산자입니다.

++(증가 연산자), --(감소 연산자)의 기호를 이용하여 수치 데이터 형식에 사용합니다.

++: +1, --: -1을 뜻하는데, 이는 코드를 간결하게 하고 프로그래밍 속도를 향상시킬 수 있지만, 

오히려 코드를 해석할 때 가독성을 저해할 수 있으므로 가독성을 해치지 않는 선에서 사용해야 합니다.

피연산자의 위치(++a, a++)에 따라 결과 값이 다르게 나올 수 있기 때문에 주의하여 사용해야 합니다.



++a → 선 증가, 후 연산(먼저 증가시키고 연산을 합니다.)

a++  선 연산, 후 증가(먼저 연산하고 증가시킵니다.)

--(뺄셈)도 마찬가지입니다.



증감 연산자를 사용해보도록 하겠습니다.



#include <stdio.h>

int main(void){

     int num1 = 10, num2 = 20;

     //증가 연산자
     //num = 10
     printf("%d \n", ++num1);
     printf("%d \n", num1);

     //num1 = 11
     printf("%d \n", num1++);
     printf("%d \n", num1);
     
     //구분선
     printf("---------------------\n");

     //감소 연산자
     //num = 12
     printf("%d \n", --num1);
     printf("%d \n", num1);

     //num = 9
     printf("%d \n", num1--);
     printf("%d \n", num1);

     printf("---------------------\n");

     //증가 연산자
     //num2 = 20
     printf("%d \n", num2++);
     printf("%d \n", ++num2);

     //감소 연산자
     //num2 = 22
     printf("%d \n", num2--);
     printf("%d \n", --num2);

     return 0;

}



다음은 출력 결과입니다.






int num1 = 10, num2 = 20;

 변수 num1, num2를 정수형(int)으로 선언한 뒤 초기화합니다.

num1 = 10, ++num1을 출력하면 1을 더한 11의 결과 값이 나옵니다.

num1 = 11, num1++을 출력하면 11의 값이 출력된 다음 1을 더합니다.

다음 num1 값을 출력하면 12의 결과 값이 나옵니다.



num1 = 12, --num1을 출력하면 1을 뺀 11의 결과 값이 나옵니다.

num1 = 11, num1--을 출력하면 11의 값이 출력된 다음 1을 뺍니다.

다음 num1의 값을 출력하면 10의 결과 값이 나옵니다.



num2 = 20, num2++을 출력하면 20의 값이 출력된 다음 1을 더합니다.

num2 = 21, ++num1을 출력하면 1을 더한 22의 결과 값이 나옵니다.

num2 = 22, num1--을 출력하면 22의 값이 출력된 다음 1을 뺍니다.

num2 = 21, --num1을 출력하면 1을 뺀 20의 결과 값이 나옵니다.



관계 연산자

관계를 비교해서 참(True)과 거짓(False)으로 결론을 짓는 연산자입니다.

관계 연산의 결과가 참이면 1을 반환하고, 거짓이면 0을 반환합니다.



 관계 연산자

 비교

설명 

 >

 a>b

a가 b보다 큰지를 비교 

< 

a<b 

a가 b보다 작은지를 비교 

>= 

a>=b 

a가 b보다 크거나 같은지를 비교 

<= 

a<=b 

a가 b보다 작거나 같은지를 비교 

== 

a==b 

a와 b가 같은지를 비교 

!= 

a!=b 

a와 b가 같지 않은지를교 




관계 연산자를 사용해보도록 하겠습니다.



#include <stdio.h>

int main(void){

     int num1 =2, num2 = 7;
     int result1, result2, result3, result4;

     result1 = num1 < num2;
     printf("result1: %d\n", result1);

     result2 = num1 <= num2;
     printf("result2: %d\n", result2);

     result3 = num1 == num2;
     printf("result3: %d\n", result3);

     result4 = num1 != num2;
     printf("result4: %d\n", result4);

     return 0;

}



다음은 출력 결과입니다.






int num1 = 2, num2 = 7;

 변수 num1, num2를 정수형(int)으로 선언한 뒤 초기화합니다.

result1 = num1 < num2;  참이므로 1을 반환합니다.

result2 = num1 <= num2;  참이므로 1을 반환합니다.

result3 = num1 == num2;  거짓이므로 0을 반환합니다.

result4 = nu1 != num2;  num1과 num2가 같지 않으므로 1을 반환합니다.

(==의 관계 연산자와 상대적인 개념이라 생각하시면 됩니다.)



논리 연산자

논리 연산자의 종류에는 AND 연산자(&&), OR 연산자(||), NOT 연산자(!)가 있습니다.

참고로 OR 연산자(||)는 shift + 역슬래시(\)를 사용합니다.



AND 연산자(&&)

그리고(~이고)의 의미입니다.

피연산자의 결과 값이 양쪽 모두 참(1)이어야 참(1)을 반환합니다.

(거짓(0)의 값도 마찬가지로 적용합니다.)



 AND 연산자(&&)

결과 값 

0(거짓) && 0(거짓) 

0 (거짓) 

0(거짓) && 1(참)

0 (거짓)

1(참) && 0(거짓) 

0 (거짓) 

1(참) && 1(참) 

1 (참) 




OR 연산자(||)

또는(~이거나)의 의미입니다.

피연산자의 결과 값이 한쪽만 참(1)이어도 참(1)을 반환합니다.



 OR 연산자(||)

결과 값 

0(거짓) || 0(거짓) 

0 (거짓) 

0(거짓) || 1(참)

1 (참)

1(참) || 0(거짓) 

1 (참) 

1(참) || 1(참) 

1 (참) 



NOT 연산자(!)

논리 부정(~이 아니다)의 의미입니다.

NOT 연산자는 청개구리 같은 아이입니다.

이 귀여운 녀석은 결과 값이 참(1)이면 거짓(0)을 반환하죠.



 NOT 연산자(!)

결과 값 

!1(참) 

0 (거짓) 

!0(거짓)

1 (참)



#include <stdio.h>

int main(void){

     int num1 = 2, num2 = 5, num3 =7;
     int result1, result2, result3, result4, result5;

     //참 = 참 && 참
     result1 = (num1>0) && (num2<10);
     printf("result1에 저장된 값: %d\n", result1);

     //참 && 거짓
     result2 = (num1>0) && (num2>10);
     printf("result2에 저장된 값: %d\n", result2);

     //거짓 || 거짓
     result3 = (num2<=2) || (num3>8);
     printf("result3에 저장된 값: %d\n", result3);

     //거짓 || 참
     result4 = (num2<=2) || (num3<8);
     printf("result4에 저장된 값: %d\n", result4);

     //거짓 = !참
     result5 = !(num2<num3);
     printf("result5에 저장된 값: %d\n", result5);

     return=0; 
     
     } 
   



다음은 출력 결과입니다.






int num1 = 2, num2 = 5, num3 = 7;

 변수 num1, num2, num3를 정수형(int)으로 선언한 뒤 초기화합니다.

result1 = (num1>0) && (num2<10);

 참 && 참이므로 참(1)을 반환합니다.

result2 = (num1>0) && (num2>10);

 참 && 거짓이므로 거짓(0)을 반환합니다.

result3 = (num2<=2) || (num3>8);

 거짓 || 거짓이므로 참(1)을 반환합니다.

result4 = (num2<=2) || (num3<8);

 거짓 || 참이므로 참(1)을 반환합니다.

result5 =! (num2<num3);

 결과 값은 참(1)이므로 NOT 연산자를 통해 거짓(0)을 반환합니다.