c

05_연산자(Operator)

RongBee 2023. 3. 18. 20:31

Operator는 연산자는 뜻이다.

 

수학과 관련된 기능을 담당하고 있다.

Operator 중에 산술 연산자, 논리 연산자, 관계 연산자, 증감 연산자, 대입 연산자, 조건 연산자 등 여러 가지이다.

 

 

산술 연산자

 

구분  연산자  표현방법
더하기 + (Addition) A + B
빼기 - (Subtraction) A - B
곱하기 * (Multiplication) A * B
나누기 / (Division) A / B
나머지 %(Remainder) A % B

 

 

int main()
{
	int A = 1 + 3;
	printf("A : %d\n", A);

	char B = A;
	printf("B : %d\n", B);

	short C = A * B;
	printf("C : %d\n", C);

	int D = C / (A + B) * 2;
	printf("D : %d\n", D);

	float FA = 1.5 + 1.7;
	printf("FA : %f\n", FA);

	float FB = FA * 2.0;
	printf("FB : %f\n", FB);
}

 

정수 자료형으로 만든 변수끼리는 산술 연산에 대해서 문제가 발생하지 않는다.

단 자료형의 범위 값을 넘어가게 된다면 문제가 발생한다. 정수형끼리의 연산과 실수형끼리의 연산은 문제가 발생할 일이

 

적지만 정수형과 실수형끼리의 연산은 문제가 발생한다.

 

복합 대입 연산자

대입 연산자가 발동되기 전에 특정 연산을 하고 난 뒤 대입하는 연산자이다.

= 은 대입 C언어에서 대입 연산자이다. =에 +, -, *, /, % .. 붙은 것이 바로 복합 대입 연산자이다.

 

구분 연산자 표현 방법 같은 식
더하기 += A += B A = A + B
빼기 -= A -= B A = A - B
곱하기 *= A *= B A = A * B
나누기 /= A /= B A = A  / B
나머지 %= A %= B A = A % B

 

 

int A = 10;                  // int형 메모리 공간의 이름은 A이고 A의 값은 10
A = A + 10;                  // A에 A + 10을 대입
printf("A + 10 : %d\n", A);  // A + 10 : 20의 값을 출력

A += 10;                     // A에 A + 10을 대입과 같은 의미(복합 대입 연산자)
printf("A += 10 : %d\n", A); // A += 10 : 30의 값을 출력

 

이와 같이 처음 변수 A에 10을 대입하는 A + 10을 출력하면 20의 값이 나오게 된다. 그 후에

A += 10을 하게 된다면 이 또한 A + 10을 대입한다는 의미이기 때문에 20에 10을 더해 30이라는 수가 나온다.

 

 

 

 

비교 연산자

 

비교 연산자는 특정한 값을 비교하는 연산자를 의미합니다.

<, >, <=, >=, ==, != 과 같이 쓰며 연산의 결과는 0(False), 1(True)를 반환합니다.

C Programming에서 반환이라는 의미는 특정한 값을 보내준다 입니다.

 

 

구분 연산자  표현 방법
 크기 작거나 크거나 < , > A > B,   A < B
크기가 같거나 작거나 크거나 <= , >= A <= B,   A >= B
관계가 같다 == A == B
관계가 같지 않다 != A != B

 

int A = 10, B = 10, C = 20;
char Result;

Result = A > C;                    // A가 C보다 크다면 10 > 20 (False)
printf("A > C : %d\n",Result);     // False이므로 0

Result = B < C;                    // B가 C보다 작다면 10 < 20 (True)
printf("B < C : %d\n",Result);     // True이므로 1

Result = A >= B;                   // A가 B보다 작거나 같다면 10 >= 10 (True) 
printf("A >= B : %d\n,Result);     // True이므로 1

Result = B <= C;                   // B가 C보다 작거나 같다면 10 <= 20 (True)
printf("B <= C : %d\n",Result);    // True이므로 1

Result = A == B;                   // A가 B와 같다면 10 == 10 (True)
printf("A == B : %d\n",Result);    // True이므로 1

Result = B != C;                   // B와 C가 같지 않다면 10 != 20 (True)
printf("B != C : %d",Result);      // True이므로 1

 

 

증감 연산자

 

특정한 값을 1 증가 시키거나 감소시키는 연산자이다.

사용 위치에 따라 변환하는 타이밍이 다른 특징이 있다.

증감 연산자에는 값 전에 연산자를 사용하는 전위 증감 연산자와 값 후에 연산자를 사용하는 후위 증감 연산자가 있다.

 

구분 연산자 A를 1이라고 가정했을 때 결과
전위 증가 연산자 ++A 2
후위 증가 연산자 A++ 2
전위 감소 연산자 --A 0
후위 감소 연산자 A-- 0

 

하지만 밑의 예제처럼 상황에 따라 증가되는 순서가 다르다.

 

int A = 0;

// 전위 증감 연산자
++A;                             // A를 1증가
printf("A : %d\n", A);           // A를 1증가 하므로 A의 값은 1
--A;                             // A를 1감소
printf("A : %d\n", A);           // A를 1감소 시킨 값의 A는 0
++A;

// 후위 증감 연산자
printf("A : %d\n", A++);         // ++A된 A의 값을 1증가시키지만, ++A된 A값을 출력하여 1
printf("A : %d\n", A);           // A값 1을 A++시킨 A의 값은 2

 

 

 

삼항 연산자

 

삼항 연산자는 진리값에 의해 True일 때의 값과 False일 때의 값을 다르게 반환해주는 연산자이다.

사용방법은 (진리값) ? 참일 때 반환할 값 : 거짓일 때 반환할 값이다.

 

int A = 10, B = 20;
char Result = A > B ? 'A' : 'B';

printf("A와 B중 더 큰 변수는 %c입니다.\n",Result);      // B 출력

int C = 30;
Result = (B > C) ? 'C' : 'B';
printf("B와 C중 더 작은 변수는 %c입니다.\n",Result);    // B 출력

int number = 1 ? 100 : 1000;
printf("number의 값은? %d입니다.",number);              // 1은 True이므로 100 출력

 

sizeof() 연산자

 

sizeof()연산자는 Datatype의 크기를 반환해주는 연산자이다.

 

char IntSize = sizeof(int);         
printf("IntSize = %d\n",IntSize);          // int는 4byte이므로 4출력

char DoubleSize = sizeof(double)    
printf("DoubleSize = %d\n",DoubleSize);    // double은 8byte이므로 8출력

short MyShort = 10; 
char MyShortSize = sizeof(MyShort);  
printf("MyShortSize = %d\n",MyShortSize);  // MyShort에 10이 들어가있지만 short 자료형이기 때문에 2출력

char TenSize = sizeof(10);
printf("TenSize = %d\n",TenSize);          // sizeof(10)의 정수 10은 int로 반환되어 4출력

charPiSize = sizeof(3.14f);
printf("PiSize = %d\n",PiSize);            // sizeof(3.14f)의 3.14는 float으로 반환되어 4출력