[C언어] 004. 연산자

Posted on by pkchan
004-01 // ARITHMETIC OPERATORS // 산술 연산자
operatormeaning of operator
+더하기 혹은 플러스 기호 / addition or unary plus
빼기 혹은 마이너스 기호 / subtraction or unary minus
*곱하기 / multiplication
/나누기 / division
%나머지 / remainder after division

상수 혹은 변수, 숫자를 계산할 때 사용합니다. 좌항과 우항의 자료형이 모두 정수일 경우 결과도 정수입니다. 두 항이 모두 정수일 경우 나눗셈은 몫을 구하는 용도로 사용합니다. 소수점이 출력되는 나눗셈을 할 경우에는 좌항, 우항 중 한 항이 실수 자료형 이어야 합니다.

/*
example 004-01
C language arithmetic operator
*/

#include <stdio.h>

int main (void) {
          
          int a = 9, b = 4, c;

          c = a+b;
          printf("a+b = %d \n",c);

          c = a-b;
          printf("a-b = %d \n",c);

          c = a*b;
          printf("a*b = %d \n",c);

          c=a/b;
          printf("a/b = %d \n",c);

          c=a%b;
          printf("a를 b로 나눈 나머지는 = %d \n",c);

          return 0;

}
004-02 // INCREMENT, DECREMENT OPERATORS
operatormeaning of operator
+1을 증가 / increases the value by 1
1을 가감 / decreases the value by 1

증감 혹은 가감 연산자 사용 시 변수의 앞에 사용하는 경우와 뒤에 사용하는 경우에는 차이가 있습니다.

/*
example 004-02
C language increment, decrement operator
*/

#include <stdio.h>

int main (void) {

          int a = 5, b = 7, c = 6, d = 3;

          printf("%d\n",a++); // 변수의 값인 5를 출력하고 1을 더함
          printf("%d\n",++b); // 변수의 값에 1을 더하고 8을 출력함
          printf("%d\n",c--); // 변수의 값인 6을 출력하고 1을 뺌
          printf("%d\n",--d); // 변수의 값에서 1을 빼고 2를 출력함
          
          return 0;

}
004-03 // ASSIGNMENT OPERATORS
operatorexamplesame as
=a = ba = b
+=a += ba = a + b
-=a -= ba = a – b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b

변수에 특정 값을 할당 혹은 대입할때 사용합니다. 대입 연산자의 왼쪽에 오는 변수는 변수가 할당된 공간으로 사용되며, 오른쪽에 오는 변수는 변수가 리턴하는 값으로 사용됩니다.

/*
example 004-03
C language assignment operator
*/

#include <stdio.h>

int main (void) {

          int a = 5, c;

          c = a;
          printf("c = %d \n", c); //c = 5
          
          c += a; // c = c + a
          printf("c = %d \n", c); //c = 10

          c -= a; // c = c - a
          printf("c = %d \n", c); //c = 5

          c *= a; // c = c * a
          printf("c = %d \n", c); //c = 25

          c /= a; // c = c / a
          printf("c = %d \n", c); //c = 5

          c %= a; // c = c % a
          printf("c = %d \n", c); //c = 0

          return 0;

}
004-04 // RELATIONAL OPERATORS
operatormeaning of operatorexample
==같으면 equal to5 == 3 returns 0
>크면 greater than5 > 3 returns 1
<작으면 less than5 < 3 returns 0
!=같지않으면 not equal to5 != 3 returns 1
>=크거나 같으면 greater than or equal to5 >= 3 returns 1
<=작거나 같으면 less than or equal to5 <= 3 returns 0

관계연산자는 두 피연산자 사이의 관계를 비교하여 참(true) 일 경우 1을 리턴하고 거짓(false) 일 경우 0을 리턴합니다.

/*
example 004-04
C language relational operator
*/

#include <stdio.h>

int main (void) {

          int a = 5, b = 5, c = 10;

          printf("%d == %d = %d \n", a, b, a == b);
          printf("%d == %d = %d \n", a, c, a == c);

          printf("%d > %d = %d \n", a, b, a > b);
          printf("%d > %d = %d \n", a, c, a > c);

          printf("%d < %d = %d \n", a, b, a < b);
          printf("%d < %d = %d \n", a, c, a < c);

          printf("%d != %d = %d \n", a, b, a != b);
          printf("%d != %d = %d \n", a, c, a != c);

          printf("%d >= %d = %d \n", a, b, a >= b);
          printf("%d >= %d = %d \n", a, c, a >= c);

          printf("%d <= %d = %d \n", a, b, a <= b);
          printf("%d <= %d = %d \n", a, c, a <= c);

          return 0;

}
004-05 // LOGICAL OPERATORS
operatormeaning of operatorexample
&&logical AND 양쪽 모두 참이면 참(true)(5==3 && 3==3) equal to 0
||logical OR 둘중 하나 이상 참이면 참(true)(5==3 && 3==3) equal to 1
!logical NOT 거짓이면 참(true)!(5==3) equal to 1

논리연산자 &&(AND)는 두 피연산자가 모두 참이면 1이 되고 ||(OR)는 둘 중 하나 이상이 참이면 1, !(NOT)은 거짓일 경우 1 참일 경우 0이 됩니다.

/*
example 004-05
C language logical operator
*/

#include <stdio.h>

int main (void) {

          int a = 5, b = 5, c = 10, result;
          
          result = (a==b) && (c<b);
          printf("(a==b) && (c<b) equals to %d \n", result);

          result = (a==b) && (c>b);
          printf("(a==b) && (c>b) equals to %d \n", result);

          result = (a==b) || (c>b);
          printf("(a==b) || (c>b) equals to %d \n", result);

          result = (a!=b) || (c>b);
          printf("(a!=b) || (c>b) equals to %d \n", result);

          result = !(a!=b);
          printf("!(a==b) equals to %d \n", result);

          result = !(a == b);
          printf("!(a == b) equals to %d \n", result);

          return 0;

}
004-06 // BITWISE OPERATORS
operatormeaning of operator
&비트의 AND연산 // bitwise AND
|비트의 OR연산 // bitwise OR
^비트의 XOR연산 // bitwise XOR
~비트의 반전연산 // bitwise complement
<<왼쪽으로 비트 이동 // shift left
>>오른쪽으로 비트 이동 // shift right

비트 연산은 0과 1로 이루어진 2진수의 비트 단위의 연산입니다.

/*
example 004-06
C language bitwise operator
*/

& 연산자

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
1100 & 1010 = 1000

| 연산자

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
1100 & 1010 = 1110

^ 연산자

1 | 1 = 0
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
1100 & 1010 = 0110

~ 연산자

a = ~1100;
a 값은 0011

<< 연산자

101011<<2 = 101100

>> 연산자

101011>>2 = 111010
004-07 // TERNARY OPERATOR
conditionalExpression ? expression1 : expression2

조건이 있는 삼 항 연산자입니다. 조건이 참일 때 :의 왼쪽 값을, 거짓일 때 :의 오른쪽 값을 반환합니다. 이는 간단한 if 조건문을 대체할 수 있습니다.

/*
example 004-07
C language ternary operator
*/

#include <stdio.h>

int main (void) {

          int a = 5, b = 3;
          int c = 4, d = 5, e;

          (a == b)?printf("true\n"):printf("false\n");

          e = (c != d)?13:15;

          printf("%d\n",e);

          return 0;

}
004-08 // SIZEOF OPERATOR
sizeof(constant, variables, array, structure, data type)

변수 혹은 자료형의 메모리의 크기를 반환하는 함수입니다. 각각 자료형의 크기는 시스템마다 다를 수 있습니다.

/*
example 004-08
C language sizeof operator
*/

#include <stdio.h>

int main (void) {

          int a, e[10];
          oat b;
          double c;
          char d;

          printf("Size of int = %lu bytes\n",sizeof(a));
          printf("Size of  oat = %lu bytes\n",sizeof(b));
          printf("Size of double = %lu bytes\n",sizeof(c));
          printf("Size of char = %lu byte\n",sizeof(d));
          printf("Size of e[10] = %lu bytes\n", sizeof(e));

          return 0;

}
004-09 // REVIEW EXERCISES

1. 두 자리의 정수를 입력받아 일의 자리와 십의 자리를 분리하여 출력 하세요.

두자리의 정수를 입력하세요. : 34
일의 자리는 4, 십의 자리는 3입니다.

댓글 남기기