표현식 및 다양한 연산자
표현식 및 연산자의 분류
- 표현
- 변수, 다양한 리터럴 상수 및 함수 호출로 구성된 표현식입니다.
- 항상 결과가 있습니다.
- 변수, 다양한 리터럴 상수 및 함수 호출로 구성된 표현식입니다.
- 연산자: + – * /
- 미리 정의된 작업을 수행하는 문자 또는 문자 조합 기호입니다.
- 미리 정의된 작업을 수행하는 문자 또는 문자 조합 기호입니다.
- 피연산자
- 작업에 참여하는 변수 또는 상수
다른 연산자
- 단항, 이항 및 삼항 연산자
- 연산자는 연산과 관련된 피연산자 수에 따라 분류됩니다.
- 부호를 지정하는 + 및 -는 단항 연산자입니다.
- 덧셈과 뺄셈의 +, -, *, /와 같은 연산은 이진 연산자입니다.
- 삼항 연산자는 조건 연산자 ‘? : ‘는 유일한 것입니다.
- 부호를 지정하는 + 및 -는 단항 연산자입니다.
- 연산자는 연산과 관련된 피연산자 수에 따라 분류됩니다.
- 단항 연산자
- 연산자의 위치에 따라 전치사와 후치로 나뉩니다.
- ++ 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로 나눈 나머지입니다.
- %의 피연산자는 정수여야 합니다.
- 오류라면 오류
- 결과는 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-값은 정확함을 의미합니다.
- 오른쪽 단어의 r-값은 정확함을 의미합니다.
- 할당 연산자의 왼쪽에는 하나의 변수만 나타날 수 있습니다.
- l 왼쪽 단어의 값은 왼쪽 변수를 의미합니다.
- l 왼쪽 단어의 값은 왼쪽 변수를 의미합니다.
- 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씩 증가하기 전의 값이 연산 결과입니다.
- 1씩 증가하기 전의 값이 연산 결과입니다.
- ++n : 접두사
- 1씩 증가한 값이 연산 결과
- n++ : 포스트픽스
- 각 변수 값을 1씩 증가
- 감소 연산자 —
- 각 변수 값을 1씩 감소
- n– : 포스트픽스
- 1 감소하기 전의 값은 연산의 결과입니다.
- 1 감소하기 전의 값은 연산의 결과입니다.
- –n : 접두어
- 1 감소된 값이 연산 결과입니다.
- 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