반응형

<수식 및 연산자 이해하기>

 

> 수식 (expression) 의 이해

수식이란?

(1) 피연산자 (operand)와 연산자(operator)로 구성된 문장

(2) 피연산자 상수값 또는 변수를 사용

int result = 123 + 456;

* int result, 123, 456 → 피연산자(operand)

* = , + → 연산자(operator)

 

> 연산자 (operator) 의 이해

1)  연산자의 형식

단항 연산자: 피연산자가 한 개의 연산자 ( -, ~, !, *, &, sizeof, +, ++, --)

이항 연산자: 피연산자가 두 개의 연산자 (*, /, %, +, -, <<, >>, <, >, <=, >=, ==, !=, &, |, ^, &&, ||) * 산술연산자

삼항 연산자: 피연산자가 세 개의 연산자 (?, :)

 

2) 연산자의 종류

산술연산자, 대입연산자, 증감연산자, 관계연산자, 논리연산자, 조건연산자, 비트연산자, 주소참조연산자, 기타연산자

 

3) 연산자의 우선순위

(1) 우선 순위가 높은 연산자가 있는 수식이 먼저 계산됨

(2) 연산자의 종류에 따라 연산 방향이 정해져 있음

 

 

<산술 및 대입 연산자 이해하기>

 

> 산술 연산자 이해하기

산술연산자란?

- 피연산자가 두개 필요한 이항 연산자

- 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/) 연산자는 정수형과 실수형 모두 계산 가능

- 나머지(%) 연산자는 정수형 계산만 가능

#include <stdio.h>

int main()
{

	// 정수형 나눗셈 유의사항
	int result = 100 / 40;	// 정수끼리 나눗셈, 소수점 버려짐
	float result0 = 100 / 40;	// 정수 2가 float 형으로 자동형변환이 됨
	float result1 = (float)100 / 40;	// 정수 100을 형변환연산자
	int result2 = (float)100 / 40;	// 정수 100을 강제형변환하여 소수점 이하 버려짐

	printf("result = %d, result0 = %7.2f, result1 = %7.2f, result2 = %d\n", result, result0, result1, result2);

	// 나머지 연산자 예제
	int result3 = 100 % 40;

	printf("result3 = %d\n", result3);	//나머지 값 20 변수에 저장

	
/*
	result = 2, result0 =    2.00, result1 =    2.50, result2 = 2
	result3 = 20
*/

}

 

> 산술 연산자 실습

#include <stdio.h>

int main()
{
	int int_1, int_2;
	
	printf("첫번째 정수값은 = ");
	scanf_s("%d", &int_1);
	printf("두번째 정수값은 = ");
	scanf_s("%d", &int_2);

	int result_1 = int_1 + int_2;
	int result_2 = int_1 - int_2;
	int result_3 = int_1 * int_2;
	int result_4 = int_1 / int_2;
	int result_5 = int_1 % int_2;

	printf("결과\n");
	printf("%d + %d = %d\n", int_1, int_2, result_1);
	printf("%d - %d = %d\n", int_1, int_2, result_2);
	printf("%d * %d = %d\n", int_1, int_2, result_3);
	printf("%d / %d = %d\n", int_1, int_2, result_4);
	printf("%d %% %d = %d\n", int_1, int_2, result_5);

	return 0;

/*
첫번째 정수값은 = 10
두번째 정수값은 = 4
결과
10 + 4 = 14
10 - 4 = 6
10 * 4 = 40
10 / 4 = 2
10 % 4 = 2
*/

}

 

 

> 대입 연산자 이해하기

1) 대입연산자란?

(1) 이항 연산자

(2) 연산자 오른쪽에 있는 값을 왼쪽에 대입 또는 저장하는 연산자

int result = 100;

int result = 100 + 30;	// 연산자 우선순위에 따라 = 보다 +가 높음

2) 복합대입연산자란?

- 단순 대입 연산자( = ) 와 산술 연산자를 복합적으로 사용하는 연산자

기호 사용 예 동일한 의미
+= sum += 3; sum = sum + 3;
-= sum -= 3; sum = sum - 3;
*= sum *= 3; sum = sum * 3;
/= sum /= 3; sum = sum / 3;
%= sum %= 3; sum = sum % 3;

 

> 대입 연산자 실습

#include <stdio.h>

int main()

{
	int int_1, int_2;

	printf("첫번째 정수 값은 = ");
	scanf_s("%d", &int_1);
	printf("두번째 정수 값은 = ");
	scanf_s("%d", &int_2);

	printf("결과\n");
	printf("10 += 3 :%d\n", int_1 += int_2);
	printf("10 -= 3 :%d\n", int_1 -= int_2);
	printf("10 *= 3 :%d\n", int_1 *= int_2);
	printf("10 /= 3 :%d\n", int_1 /= int_2);
	printf("10 %%= 3 :%d\n", int_1 %= int_2);

	/*
첫번째 정수 값은 = 10
두번째 정수 값은 = 3
결과
10 += 3 :13
10 -= 3 :10
10 *= 3 :30
10 /= 3 :10
10 %= 3 :1
	*/

	return 0;
}

 


<증감 및 관계 연산자 이해하기>

 

> 증감 연산자 이해하기

1) 증감연산자란?

(1) 단항 연산자

(2) 정수형 변수의 값을 1 증가시키거나 감소시킬 때 사용

(3) 변수이름 앞 또는 뒤에 붙여서 사용

(4) 연산자 기호

: 1 증가시키는 기호 ++

: 1 감소시키는 기호 --

 

2) 후위 / 전위 증감 연산자

- 후위 증감 연산자:

변수 이름 뒤에 증감 연산자를 사용

전체 수식을 계산한 다음 제일 마지막에 증감 연산자 계산

예 ) a ++, b --

 

- 전위 증감 연산자:

변수 이름 앞에 증감 연산자를 사용

전체 수식을 계산하기 전에 증감 연산자를 계산한 후 수식을 계산예 ) ++ a, -- b

 

3) 후위 / 전위 증감 연산자 예제

(1) 단독으로 사용할 경우

count++;
++count;
count--;
--count;	// 후위/전위 상관없이 1 증가/감소됨

(2) 대입 연산자와 같이 사용할 경우

- 후위 연산자 계산순서

대입 연산자 → 증감 연산자

int result = count++;	
// 1.result ← count
// 2.count ← count + 1
                        
int result = count--;	
// 1.result ← count
// 2.count ← count - 1

- 전위 연산자 계산순서

증감연산자 → 대입 연산자

int result = ++count;	
// 1.count ← count + 1
// 2.result ← count
                        
int result = --count;	
// 1.count ← count - 1
// 2.result ← count

 

(3) 수식과 함께 사용될 경우

int result = count++ + --total;

- 후위 연산자 계산순서

산술 연산자 → 대입 연산자 → 증감 연산자

 

- 전위 연산자 계산순서

증감 연산자 → 산술 연산자 → 대입 연산자

 

#include <stdio.h>

int main()
{
	int count = 10;
	int total = 30;

	int result = count++ + --total;

	printf("result = %d\n", result);

	/*count ++ = 10
	--total = 29
	result = 39*/

	return 0;
}

 

> 증감 연산자 실습

#include <stdio.h>

int main()
{
	int count = 10;

	// 단독사용
	count++;	// count = count + 1; count += 1;
	printf("단독 사용(후위++) count = %d\n", count);
	++count;	// count = count + 1; count += 1;
	printf("단독 사용(++전위) count = %d\n", count);
	count--;	// count = count - 1; count -= 1;
	printf("단독 사용(후위--) count = %d\n", count);
	--count;	// count = count - 1; count -= 1;
	printf("단독 사용(--전위) count = %d\n", count);

	// 대입연산자와 같이 사용

	int result;

	result = count++;	// count = result → result + 1
	printf("대입연산자와 같이 사용 (후위++) result = %d, count = %d\n", result, count);
	result = count--;
	printf("대입연산자와 같이 사용 (후위--) result = %d, count = %d\n", result, count);
	result = ++count;
	printf("대인연산자와 같이 사용 (++전위) result = %d, count = %d\n", result, count);
	result = --count;
	printf("대입연산자와 같이 사용 (--전위) result = %d, count = %d\n", result, count);

	// 수식과 함께 사용할 경우
	
	int total = 30;
	count = 10;
	printf("total = %d, count = %d\n", total, count);

	result = count++ + --total;
	printf("result = %d, count = %d, total = %d\n", result, count, total);
	result = count-- + ++total;
	printf("result = %d, count = %d, total = %d\n", result, count, total);
	
	return 0;
}

 

> 관계 연산자 이해하기

관계 연산자란?

(1) 이항 연산자

(2) 연산자를 기준으로 양쪽의 피연산자를 비교하여 참(True)과 거짓(False)을 구별

(3) 참인 경우 값은 1, 거짓인 경우 값은 0

(4) 관계연산자 종류

: 같다, 다르다, 크다, 작다, 크거나 같다, 작거나 같다. (==, !=, >, >=)

 

> 관계 연산자 실습

#include <stdio.h>

int main(void)
{
	int op_1, op_2;

	printf("첫번째 값 = ");
	scanf_s("%d", &op_1);
	printf("두번째 값 = ");
	scanf_s("%d", &op_2);

	int result;
	result = op_1 == op_2;	// False = 0
	printf("%d == %d = %d\n", op_1, op_2, result);
	result = op_1 != op_2;	// True = 1
	printf("%d != %d = %d\n", op_1, op_2, result);
	result = op_1 > op_2;	// False = 0
	printf("%d > %d = %d\n", op_1, op_2, result);
	result = op_1 < op_2;	// True = 1
	printf("%d < %d = %d\n", op_1, op_2, result);
	result = op_1 >= op_2;	// False = 0
	printf("%d >= %d = %d\n", op_1, op_2, result);
	result = op_1 <= op_2;	// True = 1
	printf("%d <= %d = %d\n", op_1, op_2, result);

	return 0;
}

< 프로그램 작성 >

 

1) 두개의 문자를 입력 받으시오.

2) 두개의 문자에 대하여, 문자 및 숫자로 화면에 출력하시오.

3) 두개의 문자에 대하여 관계연산 (==, !=, >, <)을 수행하여 결과를 출력하시오.

4) 첫 번째 문자에 1을 더하여 문자와 숫자로 출력하시오. (증감 연산자 이용)

5) 두 번째 문자에 2을 더하여 문자와 숫자로 출력하시오. (복합 대입연산자 이용)

 

#include <stdio.h>

int main(void)
{
	char op1, op2;

	printf("첫번째 문자를 입력하십시오. =");
	scanf_s("%c", &op1, sizeof(char));
	getchar();

	printf("두번째 문자를 입력하십시오. =");
	scanf_s("%c", &op2, sizeof(char));

	// 입력받은 문자 출력
	printf("첫번째 문자 = %c (%d) \n", op1, op1);
	printf("두번째 문자 = %c (%d) \n", op2, op2);

	// 문자와의 관계 연산
	printf("%c == %c = %d\n", op1, op2, op1 == op2);
	printf("%c != %c = %d\n", op1, op2, op1 != op2);
	printf("%c > %c = %d\n", op1, op2, op1 > op2);
	printf("%c < %c = %d\n", op1, op2, op1 < op2);

	// 증감 대입연산자
	op1++;
	printf("첫번째 문자에 1을 더한 문자는 %c (%d)\n", op1, op1);

	// 복합 대입연산자
	op2 += 2;
	printf("첫번째 문자에 2를 더한 문자는 %c (%d)\n", op2, op2);


/*
첫번째 문자를 입력하십시오. =a
두번째 문자를 입력하십시오. =c
첫번째 문자 = a (97)
두번째 문자 = c (99)
a == c = 0
a != c = 1
a > c = 0
a < c = 1
첫번째 문자에 1을 더한 문자는 b (98)
첫번째 문자에 2를 더한 문자는 e (101)
*/

	return 0;
}
반응형

+ Recent posts