기능별 종류

연산자

산술 연산자

+ - * / %

부호 연산자

+ -

대입 연산자

= 복합 대입 연산자

관계 연산자

== != <= < >= >

증감 연산자

++ --

포인터 연산자

* & []

구조체 연산자

. ->

논리 연산자

|| && !

비트 연산자

| & ~ >> <<

삼항 조건 연산자

? :

쉼표 연산자

,

sizeof 연산자

sizeof

캐스트 연산자

(type) type()

괄호 연산자

()

C++ 연산자

new delete :: .* ->*

 

좌변 값이란?

대입 연산자의 우변 -> 에는 상수 , 변수와 연산자들로 구성된 계산할 수 있는 표현 식이오지만.. 좌변에는 좌변 값(l-value : left value)만이 올 수 있다. 좌변 값이란 대입 연산자의 왼쪽에 올 수 있는 값으로.. 실제적인 메모리를 점유하고 있고 그 값을 바꿀 수 있는 대상이다.

연산자의 리턴 값

1 + 2 의 결과가 3이 되는 것은 사실 +가 연산의 결과를 리턴해주기 때문이다. 1과 2를 더한 값을 리턴해주기 때문에 값을 전달받을 수 있는 것이다.

복합 대입 연산자.

a = a+3;을

a += 3으로 줄여 쓸 수 있다. +나 - 연산자 외에도 * , / , ^ 연산자등 모두에 사용하는 것이 가능하다.

증감 연산자

++ , -- . 어셈블리 레벨의 조작을 하므로 빠르다. +=1이나 -=1은 컴파일러가 ++1과 --1로 치환하므로 별 차이는 없다.

관계 연산자

논리연산에 자주쓰인다.

논리 연산자

연산자

설명

!

논리 부정(Not)

논리식의 진위를 반대로 만든다.

&&

논리곱(And)

논리식이 모두 참이어야 참이다.

||

논리합(Or)

논리식 하나만 참이면 참이다.

 

!는 참 좋다. 어려운 내용도 !() 해서 쓰면 그만이다.

비트 연산자

연산자

설명

~

비트를 반전시킨다.

&

대응되는 비트가 모두 1 1이다.

|

대응되는 비트가 모두 0 0이다.

^

개의 비트가 달라야 1이다.

<<

지정한 수만큼 왼쪽으로 비트들을 이동시킨다.

>>

지정한 수만큼 오른쪽으로 비트들을 이동시킨다.

 

<< >> 는 쉬프트연산자라고도 부른다.

삼항 연산자

(조건식) ? 1:2  :  if문의 축소판. 조건이 맞으면 값1을, 틀리면 2를 반환한다.

쉼표 연산자

, 다. 연산자가 아닌 거 같지만 연산자다. 변수를 여러개 선언 할때 쓰인다.

sizeof 연산자.

sizeof(타입 또는 변수)

이 연산자는 피연산자로 주어진 타입 또는 변수의 크기를 계산한다. 피연산자로 int, double같은 타입을 쓸 수도 있고 변수를 쓸 수도 있으며 상수를 사용할 수도 있다. 아뭏든 괄호안에 있는 대상이 메모리를 얼마나 차지하고 있는지 계산한다.

캐스트 연산자

(int) 변수. 처럼 캐스팅한다. 타입을 바꿀 때 쓴다.

연산 우선순위

순위

연산자

결합순서

1

( ) [ ] -> .

왼쪽 우선

2

! ~ ++ -- + -(부호) *(포인터) & sizeof 캐스트

오른쪽 우선

3

*(곱셈) / %

왼쪽 우선

4

+ -(덧셈, 뺄셈)

왼쪽 우선

5

<< >>

왼쪽 우선

6

< <= > >=

왼쪽 우선

7

== !=

왼쪽 우선

8

&

왼쪽 우선

9

^

왼쪽 우선

10

|

왼쪽 우선

11

&&

왼쪽 우선

12

||

왼쪽 우선

13

? :

오른쪽 우선

14

= 복합대입

오른쪽 우선

15

,

왼쪽 우선

 

그냥 괄호 쓰는게 낫다.

결합 순서

결합 순서는 수식내에 같은 연산자가 있을 때 어디부터 우선 수행 할 것인지이다. 가령 예를 들자면

`a=b=c=3 이 대입문은 a, b, c 모두 3을 대입하는데 대입 연산자는 오른쪽 우선이다

산술변환

이항 연산시 양변의 타입이 다르면 큰 쪽으로 상승 변환된다. 그래야 가급적이면 정확한 계산을 할 수 있다.

대입 연산시 좌변의 타입을 따른다. 값을 대입받을 변수의 능력치를 초과할 수는 없기 때문에 대입되는 값이 변수보다 더 크면 잘라낸다.

함수 호출시 실인수와 형식인수의 타입이 다르면 형식인수의 타입을 따라간다. 함수 호출 과정에서의 인수 전달은 결국 대입 동작이기 때문에 2번 규칙과 같은 규칙이다.

캐스트 연산자를 사용하면 강제로 타입을 변환할 수 있다. 이 변환은 암시적인 산술 변환 규칙이 아니라 사용자가 직접 지정한 명시적 변환이다.

수식내에서 사용될 경우 char, unsigned char, enum형은 int형으로 자동 확장되며 float형은 double형으로 확장된다.

 

 

'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글

7장 기억 부류  (0) 2015.02.27
6장 함수  (0) 2015.02.27
5장 연산자  (0) 2015.02.27
4장 제어문  (0) 2015.02.27
3장 변수  (0) 2015.02.27
2장 프로그램의 구성 요소  (0) 2015.02.26
Posted by GENESIS8

댓글을 달아 주세요