(다) 연산자 ①

표현식 및 다양한 연산자


표현식 및 연산자의 분류

  • 표현
    • 변수, 다양한 리터럴 상수 및 함수 호출로 구성된 표현식입니다.

    • 항상 결과가 있습니다.

  • 연산자: + – * /
    • 미리 정의된 작업을 수행하는 문자 또는 문자 조합 기호입니다.

  • 피연산자
    • 작업에 참여하는 변수 또는 상수


(출처: 퍼펙트C, 강환수, 강환일, 이동규(인피니티북스))


다른 연산자

  • 단항, 이항 및 삼항 연산자
    • 연산자는 연산과 관련된 피연산자 수에 따라 분류됩니다.

      • 부호를 지정하는 + 및 -는 단항 연산자입니다.

      • 덧셈과 뺄셈의 +, -, *, /와 같은 연산은 이진 연산자입니다.

      • 삼항 연산자는 조건 연산자 ‘? : ‘는 유일한 것입니다.

  • 단항 연산자
    • 연산자의 위치에 따라 전치사와 후치로 나뉩니다.

      • ++ a : 접두사 연산자, 연산자 접두사
      • a++ : 접미사, 연산자 다음에 접미사 연산자

단항 연산자

연산자 | 피연산자	(전위:prefix)
++a : 전위 증가연산자
sizeof(int) : sizeof 연산자
(int) 3.46 : 자료형 변환연산자
-3 : 부호연산자

피연산자 | 연산자	(후위:postfix)
b-- : 후위 감소연산자
a++ : 후위 증가연산자
이항 연산자

피연산자1 | 연산자 | 피연산자2
a % 3
3 && 4
5 >= 7
삼항 연산자

피연산자1 ? 피연산자2 : 피연산자3
(5 >= 7) ? (3+5) : (10/2)


산술 연산자 및 부호 연산자

  • 산술 연산자: +, -, *, /, %
    • % 나머지(나머지, 모듈러스) 연산자
      • 정수만 피연산자로 사용할 수 있습니다.

      • 산술 나눗셈식 10/4는 산술값이 2이다.

    • 정수 간 나눗셈 연산(/) 버려진 분수가 있는 결과 존재들
      • 실수 사이의 계산 10.0 / 4.0은 2.5
    • 나머지 식 a % b
      • 결과는 a를 b로 나눈 나머지입니다.

      • %의 피연산자는 정수여야 합니다.

      • 오류라면 오류
3 / 2 * 2 → 연산값: 2
먼저 계산하는 3/2가 1이므로 전체 연산값은 2

3 / (2 * 2) → 연산값: 0

  • 부호 연산자: 단항 연산자
    • 표현식 +3, -4.5, -a
    • 숫자와 변수의 부호로 표현되는 연산자
공식 설명 계산된 값 공식 설명 계산된 값
-ㅏ 문자 연산자 10 – b + 2.5 문자 연산자 0.0
2-a 빼기 연산자 -삼 a/b+b*2 (a/b) + (b*2) 5.0
2 * + 3 ( 2 * ) + 3 13 가*2/바 ( ( a * 2 ) / b ) – -1.0
10 – / 2 10-(a/2) 8일 가 + 나 * 2 / 가 가 + ( ( ㄴ * 2 ) / ) 6.0
10% + 10/a (10% a) + (10 / a) 2 %b 실제 오류 % 오류 실수

#include <stdio.h>

int main(void) {

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

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

	return 0;
}
a = a + 2 → 7	  //대입연산자의 결합성은 오른쪽에서 왼쪽으로 수행
a → 7

a = b + c → 10	  //대입연산식의 연산값은 대입된 저장값
a → 10


대입 연산자 =

  • 오른쪽 exp 표현식의 결과를 왼쪽 변수 var에 저장하는 연산자.
    • 오른쪽 단어의 r-값은 정확함을 의미합니다.

  • 할당 연산자의 왼쪽에는 하나의 변수만 나타날 수 있습니다.

    • l 왼쪽 단어의 값은 왼쪽 변수를 의미합니다.


할당 연산자 수행 방법 (출처: Perfect C, 강환수, 강환일, 이동규(인피니티북스))

  • a = b = c = 5처럼 중첩된 대입문
    • 할당 연산자의 결합성은 ‘오른쪽에서 왼쪽(←)’입니다.

      따라서 한 번에 많은 변수에 동일한 값을 할당하십시오.
    • 즉, 변수 a, b 및 c는 모두 값 5를 저장합니다.

    • 연산 값은 5, a에 마지막으로 저장된 값입니다.

int a, b, c;

a = b = c = 5 ; → (a = (b = (c = 5)))


속기 할당 연산자 =

  • +=, -=, *=, /=, %=
  • 산술 연산자와 대입 연산자를 결합한 연산자
  • 대입 식 a = a + b는 중복 a 및 a += b를 생략하여 단순화됩니다.


보존된 대체 연산자의 연산 방법

#include <stdio.h>
#include <math.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning (disable:4996)

int main() {

	int a, b;

	printf("number:");
	scanf("%d", &a);
	printf("number for +:");
	scanf("%d", &b);
	printf("number is %d\n", a += b);

	printf("number for -:");
	scanf("%d", &b);
	printf("number is %d\n", a -= b);

	printf("number for *:");
	scanf("%d", &b);
	printf("number is %d\n", a *= b);

	printf("number for /:");
	scanf("%d", &b);
	printf("number is %d", a /= b);

	return 0;
}
number:8
number for +:5
number is 13
number for -:7
number is 6
number for *:5
number is 30
number for /:3
number is 10


증감 연산자

  • 증가 연산자 ++
    • 각 변수 값을 1씩 증가
      • n++ : 포스트픽스
        • 1씩 증가하기 전의 값이 연산 결과입니다.

      • ++n : 접두사
        • 1씩 증가한 값이 연산 결과

  • 감소 연산자 —
    • 각 변수 값을 1씩 감소
      • n– : 포스트픽스
        • 1 감소하기 전의 값은 연산의 결과입니다.

      • –n : 접두어
        • 1 감소된 값이 연산 결과입니다.

  • 주의
    • 연산자 기호 사이에는 공백이 허용되지 않습니다.

    • 증가 연산자 변하기 쉬운피연산자로만 사용할 수 있습니다.

    • 상수나 일반 표현식은 피연산자로 사용할 수 없습니다.

      • 예) ++300;, (a+1)–;
      • a = ++a * a– 같은 변수의 증가 연산자와 감소 연산자가 표현식에 사용된 경우 값이 나타나지만 사용되지는 않습니다.

#include <stdio.h>

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

	return 0;
}
m++ ++n : 3 4
m n : 4 4
m-- --n : 4 3
m n : 3 3