본문 바로가기

프로그래밍 언어들/C

5장 - C언어 연산자(operators)(1)

5장 - C언어 연산자(operators)(1)

※ 모든 소스코드를 실행해 보세요.


1. 사칙 연산자


-  기본적인 사칙연산(+, -, *, /)을 포함하여 나머지(%)를 구하는 연산자입니다.


 
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.     int num1, num2;
  6.  
  7.     num1    = 20;
  8.     num2    = 15;
  9.  
  10.     printf("num1 + num2 = %d\n", num1 + num2);
  11.     printf("num1 - num2 = %d\n", num1 - num2);
  12.     printf("num1 * num2 = %d\n", num1 * num2);
  13.     printf("num1 / num2 = %d\n", num1 / num2);
  14.     printf("num1 %% num2 = %d\n", num1 % num2);
  15.  
  16.     return 0;
  17. }


위의 소스코르를 보면, num1과 num2라는 변수에 각각 20, 15를 대입합니다.(line7-8)

그리고 출력문을 이용하여, 두 변수의 값을 사칙연산 및 나머지 연산하여 화면에 출력합니다.

저런식으로 변수와 변수 사이에 연산자를 사용할 수도 있지만 아래와 같이 변수와 상수,

상수와 상수끼리도 가능합니다.


 
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.     int num1, num2;
  6.  
  7.     num1    = 20;
  8.     num2    = 15;
  9.  
  10.     printf("num1 + num2 = %d\n", num1 + 15);
  11.     printf("num1 - num2 = %d\n", 40 - num2);
  12.     printf("num1 * num2 = %d\n", num1 * 2);
  13.     printf("num1 / num2 = %d\n", num1 / 5);
  14.     printf("num1 %% num2 = %d\n", 11 % 3);
  15.  
  16.     return 0;
  17. }


각 상황에 맞게 본인이 선택하여 사용하시면 됩니다. 특이한 사항은 line. 14의 출력문을 보시면

사칙연산 "%"를 "%%"라고 작성하였습니다. 보통 %? 는 첨자로서, 출력문 안에서 특수한 역할을 하기 때문에

단순히 "%"를 화면에 출력하고 싶으면 위와 같이 "%%"라고 입력합니다.


2. 대입 연산자


대입은 말 그대로, 어떠한 값을 변수에 대입(입력)하는 것입니다. 부호(=)을 사용합니다.


 
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.     int num1;
  6.     float f1;
  7.  
  8.     num1    = 20;
  9.     f1      = 1.14;
  10.  
  11.     return 0;
  12. }


line.8-9를 보시면, 각각 변수에 변수의 데이터타입에 맞는 데이터를 입력(대입)하고 있습니다.
즉, num1에는 20이라는 데이터가 저장이되고 f1에는 1.14라는 데이터가 저장이 됩니다.


 
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.     int num1, num2;
  6.  
  7.     num1    = 20;
  8.     num1    = num1 + 10;
  9.  
  10.     num2    = 20;
  11.     num2    += 10;
  12.  
  13.     printf("num1 = %d\n", num1);
  14.     printf("num2 = %d\n", num2);
  15.  
  16.     return 0;
  17. }


위의 소스코드를 보시면, line.7-8과 line.10-11의 두 쌍이 있습니다. 위의 경우는 num1이라는 변수에 20을 대입하고, 다시 num1에 num1 + 10, 즉 자신이 현재 가지고 있는 값인 20에 10을 더해서 다시 num1에 저장한다는 의미입니다. line.10-11의 경우도 num2에 20을 대입하였지만, 다음 줄을 보면 num2 += 10 이라고 쓰여있습니다. 실행 결과를 보시면 아시겠지만, 두 변수는 동일한 값을 출력합니다.

x = x + a을 줄여서 x += a 라고 사용할 수 있는 것입니다. 본인이 편하신 것을 선택하시면 됩니다.
덧셈 이외에도, 다른 모든 연산자들을  위 처럼 축약할 수 있습니다. ( -=, /=, *=, %= ... )


3. 비교 연산자


- 비교 연산자는 두 수의 크기를 비교하거나, 두 조건의 참 또는 거짓을 판단할 때 사용됩니다.


A > B

A와 B중 A가 큰 것인지 판단 

A < B

 A와 B중 B가 큰 것인지 판단

A >= B

 A가 B보다 크거나 같은지 판단

A <= B

 B가 A보다 크거나 같은지 판단

A == B

 A와 B가 같은지 판단

A && B

 식 A와 식 B가 둘 다 참인지 판단

A || B

 식 A와 식 B중 하나만이라도 참인지 판단



 
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.     int n1, n2, n3, n4;
  6.  
  7.     n1  = 10;
  8.     n2  = 30;
  9.     n3  = 20;
  10.     n4  = 40;
  11.  
  12.     printf("n1 > n2 = %d\n",n1 > n2);
  13.     printf("n3 < n4 = %d\n",n3 < n4);
  14.     printf("n1 <= n2 = %d\n",n1 <= n2);
  15.     printf("n3 >= n4 = %d\n",n3 >= n4);
  16.     printf("(n1 > n2) && (n3 <= n4) = %d\n",(n1 > n2) && (n3 <= n4));
  17.     printf("(n1 > n2) || (n3 <= n4) = %d\n",(n1 > n2) || (n3 <= n4));
  18.  
  19.     return 0;
  20. }


위의 소스코드를 보시면, 각 변수 n1,n2,n3,n4에 10,30,20,40의 값을 입력했습니다. 그리가 각 변수의 크기를 비교한 결과와, 각 식의 참과 거짓 여부를 판단하여 출력하였습니다. 소스코드를 실행해보면 결과 값은 0 또는 1로만 출력이 됩니다. 그 이유는 C언어에서는 어떠한 조건의 참과 거짓을 판단할 때 0은 거짓이고, 0이외의 모든 수는 참으로 인식하게 됩니다.

line.11은 n1이 n2보다 큰 것인지 판단하는 수식입니다. n1의 값이 10이고 n2의 값이 30이므로 해당 식을 거짓이 되어 0(거짓)을 출력합니다. 나머지도 같은 이치입니다.

line.16과 17을 보면, 비교하는 식은 같지만 비교 연산자가 다릅니다. line.16은 두 식이 모두 참인지 판단하는 연산자(&&)이고, line.17은 두 식 중 하나 이상이 참인지 판단하는 연산자(||)입니다.

앞의 식을 보면 n1이 n2 보다 큰 것인지 판단하고 있습니다. n1이 10이고 n2가 30이므로 해당 식은 거짓입니다. 뒤의 식을 보면 n3가 n4보다 작거나 같은 것인지 판단하고 있는데 n3가 20이고 n4가 40이므로 해당 식을 참이 됩니다.

즉, line.16의 경우 거짓 && 참 이므로, 모두 다 참이 아니기 때문에 해당 식이 거짓이 됩니다.

line.17의 경우 거짓 || 참 이므로, 둘 중 하나 이상이 참이기 때문에 해당 식이 참이 됩니다.