1. 식과 연산자
'식'은 1 + 2 와 같은 '수식'이다. C++에서는 이러한 식을 코드 안에서 사용한다.
C++ 의 식(expression) 대부분은
연산자 (연산하는 것: operator),
피연산자 (연산 대상: operand)
를 조합해서 만든다.
예를 들어 '1 + 2'의 경우 '+'가 연산자, '1'과 '2'가 피연산자가 된다.
또한 식의 '평가(evaluation)' 라는 요소 또한 중요한 개념이다.
평가는, 식의 '계산'을 하는 것이다.
예를 들어, 1+2가 평가되면 3이 된다. 평가된 후의 결과값 3을 가리켜 '식의 값' 이라고 부른다.
2. 식의 값 출력하기
또한 변수를 피연산자로 사용할 수도 있다.
3. 키보드로 입력한 값을 더하기
위는 키보드로 입력한 값을 변수로 저장한 후 더하는 코드이다.
프로그램을 실행시킨 후에 여러 정수를 입력하면 입력된 숫자가 더해진 후 출력될 것이다.
4. 연산자의 종류와 우선순위
1) 증가, 감소 연산자
- ++ 증가 연산자
:a++ or a+1 , 변수값을 1 증가시킨다. - -- 감소 연산자
: a-- or a-1, 변수값을 1 감소시킨다
2) 증가, 감소 연산자의 전위와 후위
증가, 감소 연산자는 피연산자의 앞 혹은 뒷 부분에 위치시킬 수 있다.
즉, 변수 a의 값을 증가시키는 연산의 경우 a++ 혹은 ++a 두 가지 방법으로 쓸 수 있다.
피연산자 뒤에 증가 연산자를 두는 경우를 '후위 증가 연산자'라고 부르며,
앞에 두는 경우를 '전위 증가 연산자'라고 부른다. 둘 모두 변수를 1 증가시키는 것이 목적이라면 그 결과가 같다.
하지만 표현의 차이에 따라서 프로그램의 실행 결과가 달라질 수 있다.
앞선 경우,
변수 b에 a의 값을 대입한 후 -> a의 값을 1 증가
시켰지만, 뒤의 경우
변수 a의 값을 1 증가시킨 후 -> 변수 b에 a의 값을 대입
하였다.
감소 연산자 또한 마찬가지의 성질을 지녔다.
3) 대입 연산자
대입 연산자(assignment operator)란, 지금까지 변수에 값을 할당할 때 사용했었던 '='기호를 뜻한다.
대입 연산자란, 좌변의 변수에 우변의 값을 대입 시키는 연산자이다. 이 연산자의 의미는 절대로 '같음' 이라는 의미를 가지지 않는다! 대입 연산자는,
좌변의 변수에 우변의 값을 대입
시키는 연산자이다. 연산자의 종류는 다양하다.
기호 | 이름 |
+= | 더한 후, 대입 |
-= | 뺀 후, 대입 |
*= | 곱한 후, 대입 |
/= | 나눈 후, 대입 |
%= | 나눈 후, 나머지를 대입 |
&= | 논리곱을 구한 후, 대입 |
^= | 배타적 논리곱을 구한 후, 대입 |
|= | 논리합을 구한 후, 대입 |
<<= | 왼쪽 시프트 연산 후, 대입 |
>>= | 오른쪽 시프트 연산 후, 대입 |
4) sizeof 연산자
5) 연산자의 종류와 우선순위
우선순위 | 연산자 | 설명 | 결합법칙 |
1 | :: | 범위 확인 (C++만) | 왼쪽에서 오른쪽 |
2 | ++ | 후위 증가 | |
-- | 후위 감소 | ||
() | 함수 호출 | ||
[] | 배열 첨자 | ||
. | 참조에 의한 요소 선택 | ||
-> | 포인터를 통해 요소 선택 | ||
typeid() | 런타임 형식 정보 (C++만) (typeid 참조) | ||
const_cast | 자료형 캐스트 (C++만) (const cast 참조) | ||
dynamic_cast | 자료형 캐스트 (C++만) (dynamic cast 참조) | ||
reinterpret_cast | 자료형 캐스트 (C++만) (reinterpret cast 참조) | ||
static_cast | 자료형 캐스트 (C++만) (static cast 참고) | ||
3 | ++ | 전위 증가 | 오른쪽에서 왼쪽 |
-- | 전위 감소 | ||
+ | 단항 덧셈 | ||
- | 단항 뺄셈 | ||
! | 논리적 NOT | ||
~ | 비트 NOT | ||
(자료형) | 자료형 캐스트 | ||
* | 우회 (역참조) | ||
& | 의-주소 | ||
sizeof | 의-크기 | ||
new, new[] | 동적 메모리 할당 (C++만) | ||
delete, delete[] | 동적 메모리 할당해제 (C++만) | ||
4 | .* | 멤버접근 포인터 (C++만) | 왼쪽에서 오른쪽 |
->* | 멤버접근 포인터 (C++만) | ||
5 | * | 곱셈 | |
/ | 나눗셈 | ||
% | 계수 (나머지) | ||
6 | + | 덧셈 | |
- | 뺄셈 | ||
7 | << | 비트 왼쪽 시프트 | |
>> | 비트 오른쪽 시프트 | ||
8 | <=> | 삼단 비교 | |
9 | < | 관계적 연산자들에 대해 < 각각의 | |
<= | 관계적 연산자들에 대해 ≤ 각각의 | ||
> | 관계적 연산자들에 대해 > 각각의 | ||
>= | 관계적 연산자들에 대해 ≥ 각각의 | ||
10 | == | 관계적 = 각각의 | |
!= | 관계적 ≠ 각각의 | ||
11 | & | 비트 AND | |
12 | ^ | 비트 XOR (배타적 or) | |
13 | | | 비트 OR (포함적 or) | |
14 | && | 논리 AND | |
15 | || | 논리 OR | |
16 | ?: | 3항 연산자 조건부 (?: 참조) | 오른쪽에서 왼쪽 |
17 | = | 직접 할당 (C++ 클래스를 위해 기본적으로 제공됨) | |
+= | 덧셈에 의한 할당 | ||
-= | 뺄셈에 의한 할당 | ||
*= | 곱셈에 의한 할당 | ||
/= | 나눗셈에 의한 할당 | ||
%= | 나머지에 의한 할당 | ||
<<= | 비트 왼쪽 시프트에 의한 할당 | ||
>>= | 비트 오른쪽 시프트에 의한 할당 | ||
&= | 비트 AND에 의한 할당 | ||
^= | 비트 XOR에 의한 할당 | ||
|= | 비트 OR에 의한 할당 | ||
18 | throw | 던지기 연산자 (던지기 예외, C++만) | |
19 | , | 쉼표 | 왼쪽에서 오른쪽 |
<표 출처> ko.wikipedia.org/wiki/C%EC%99%80_C%2B%2B%EC%9D%98_%EC%97%B0%EC%82%B0%EC%9E%90
<참고>
그림으로 배우는 C++ Programming 2nd Edition /Mana Takahashi 저/서재원 역 | 영진닷컴
'C++ 코딩 > C++ 기초개념' 카테고리의 다른 글
STL 표준 템플릿 라이브러리 (Standard Template Library) (0) | 2022.04.01 |
---|---|
<C++ 기초> 공용체 union (0) | 2021.03.18 |
<C++ 기초> 구조체 struct, 구조체 응용(*포인터 인수로 사용하기) (0) | 2021.02.24 |
<C++ 기초> 클래스 Class의 기본 - 맴버, 멤버함수, private, public, protect, 캡슐화 (1) | 2021.02.24 |
<C++ 기초> 동적배열, sti vector, 멤버함수 (0) | 2021.02.18 |
<C++ 기초> typedef, 열거형 enum (0) | 2021.02.16 |
<C++ 기초> 문자열 조작하기 -char[], string (0) | 2021.02.15 |
<C++ 기초> 메모리 동적 확보, 배열의 동적인 확보 (0) | 2021.02.14 |