C 프로그램 연산자(수 연산자(산술,증감,논리,관계) 2.논리 연산자(비트,조건,기타 3.기타 각종 연산자 과제)

반응형

연산자 용어 (연산자와 피 연산자)

+,-,*,/,%,,,등등

피 연산자 : 숫자나 변수가 들아 가는 자리

연산자 : 이미 정의된 연산을 수행하는 기호나 키워드

분류

연산자

산술 연산자

관계 연산자

증감 연산자

논리 연산자

조건 연산자

비트 논리 연산자

비트 이동 연산자

sizeof 연산자

대입 연산자

+  -  *  /  %

>  <  ==  !=  >=  <=

++ --

&&  ||  !

?:

&  |  ^  ~

<<  >>

sizeof()

=

연산자 용어 (N항 연산자)

 

피 연산자의 개수가 n개인 연산자

2+3            2항 연산자

2+4+8       3항 연산자

………………………….

예제로 이해 하기

산술 연산

정의 :+, -, *, / 와 같은 사칙 연산

하나 더 알아 두어야 할 것

% <- 나머지 연산자

 

관계 연산자

정의 :두 개 이상의 피 연산자를 비교하기 위해 사용

>,<,==,<=,>= 등등이 있음

잘못된 예)

=>,=<,= 는 사용하면 안된다 항상 순서에 유념할 것!

===의 차이가 무엇일까?

조건

평가

3 > 2

3 == 2

3 != 2

(3 + 2) == (3 * 2)

32보다 큰가?

32와 같은가?

32와 같지 않은가?

(3 + 2)(3 * 2)와 같은가?

1

0

1

0

증감 연산자

정의 : 변수를 일정한 간격 만큼 증가 감소 시켜주는

연산자

Int a = 10;

증가 연산자

a++

++a

감소 연산자

a- -

-- a

 

연산자 위치가 중요

a++, ++a 

증가 연산자가 변수 앞에 위치(++a)하면 수식의 평가값은 1 증가한 값

변수 뒤에 위치(a++)하면 수식의 평가값은 1이 증가하기 이전의 원래 값

그러나 변수 자체는 두 연산 모두 1 증가

결국 증가연산자 ++aa++는 모두 a=a+1의 효과

a--, --a

감소 연산자가 변수 앞에 위치(--a)하면 수식의 평가값은 1 감소한 값이나, 변수 뒤에 위치(a--)하면 수식의 평가값은 1이 감소하기 이전 원래의 값

변수 자체는 두 연산 모두 1 감소한다.

감소연산자 --aa--는 모두 a=a-1의 효과

연산자 위치

모두 연산의 평가 결과는 연산자의 위치에 따라 다르다는 것에 주의

증감연산자의 위치가 피연산자보다 앞에 위치하는 형태의 표현 ++a, --a을 전위 방식(prefix)

마찬가지로 증감연산자의 위치가 피연산자보다 뒤에 위치하는 형태의 표현 a++, a--을 후위 방식(postfix) 

 

증감 연산자

연산자

기호

의미

증가

++ 기호 이용

++a(prefix 표현)

a++(postfix 표현)

피연산자 변수의 값을 1 증가시킨다.

평가값은 1 증가한 값이다.

평가값은 1 증가하기 이전 값이다.

감소

-- 기호를 이용

--a(prefix 표현)

a--(postfix 표현)

피연산자 변수의 값을 1 감소시킨다.

평가값은 1 감소한 값이다.

평가값은 1 감소하기 이전 값이다.

2.논리 연산자

(비트,조건,기타)

 

비트 논리 연산자

 

비트 논리 연산자는 피 연산자 정수 값을 비트 단위로 논리 연산을 수행하는 연산자

비트 논리 연산자는 &, |, ^, ~ 네 가지  

비트 연산자 ^는 배타적 논리합(exclusive or) 연산자

 

연산자

기호

의미

AND

OR

XOR

NOT

x & y

x | y

x ^ y

~x

연산자 왼쪽 값과 오른쪽 값의 비트 단위의 AND 연산

연산자 왼쪽 값과 오른쪽 값의 비트 단위의 OR 연산

연산자 왼쪽 값과 오른쪽 값의 비트 단위의 XOR 연산

단일 연산자로서 연산자 오른쪽 값의 비트 단위의 NOT 연산

 

피연산자의 비트 단위로 각각 0 또는 1로 구성되는 값의 비트 연산자의 결과는 다음과 같은 0이나 1의 비트 값의 결과를 구성

 

x

y

AND 연산자 결과

OR 연산자 결과

XOR 연산자 결과

Not 연산자 결과

x & y

x | y

x ^ y

!x

0

0

0

0

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

 

논리곱

비트 연산

비트 연산자는 01만으로 구성된 이진수 각 자리에 대해 연산을 하며, 그 결과도 0 또는 1

예를 들어 비트 논리곱 연산자인 &는 두 수의 자릿수가 모두 1일 때만 1이고, 그 이외에는 0이 되는 연산을 수행

연산 3 & 5

피연산자인 35를 각각 이진수로 표현한 각각의 비트를 and 연산으로 수행한 결과의 정수값이 평가값, 1

 

조건 연산자

 

조건 삼항 연산자

조건 연산자는 C 언어에서 유일하게 세 개의 피연산자를 갖는 삼항 연산자

연산식 exp10이 아닌 값(참을 의미)으로 평가되면, 삼항 연산자의 평가값은 두 번째 연산식인 exp2의 값으로 평가

연산식 exp10(거짓을 의미)으로 평가되면 삼항 연산자의 평가값은 세 번째 연산식인 exp3의 값으로 평가

이 연산식은 변수 courses의 값이 1일 경우, 조건연산자의 평가 값은 문자 ‘A’이고 변수 courses의 값이 1이 아닌 경우, 평가 값은 문자 ‘B’

 

 

예제 소스

 

Maxmin.c

두 수 중에서 큰 수를 출력하는 기능을 조건연산자를 이용하여 전처리기 지시자 #define으로 MAX 매크로 정의

   #define MAX(x, y) ((x < y) ? y : x)

 

두 수 중에서 작은 수를 출력하는 조건연산자는 출력문에  기술

   printf("%d\n", a < b ? a : b);

 

위 두 문장을 이용하여 변수 a, b에 각각 정수 값을 저장하여 큰 수와 작은 수를 출력하는 프로그램

 

 

이동 연산자

 

Shift

이동연산자는 비트 단위로 왼쪽이나 오른쪽으로 이동시키는 연산자

C 언어에서는 다음 두 가지의 이동(shift) 연산자를 제공

 

Shift left

 

7 << 2

위 연산은 좌변의 피연산자인 7의 이진수 표기 값을, 우변에 지정한 숫자만큼 왼쪽으로 옮기라는 연산을 의미

 

 

Shift left

7 << 2

위 연산은 좌변의 피연산자인 7의 이진수 표기 값을, 우변에 지정한 숫자만큼 왼쪽으로 옮기라는 연산을 의미

 

형 변환 연산자

 

통일된 자료형으로 연산

일반적으로 C 언어의 연산식에서 여러 피연산자의 자료형이 서로 다른 경우, 하나의 통일된 자료형으로 자동 변환하여 연산을 수행

 

표현의 크기가 작은 int 34.0과 같은 double 형으로 변환하여 계산, 3.0 + 4.0을 연산하여 결과는 7.0

형 넓히기(promotion)

형 넓히기는 크기가 작은 형을 크기가 큰 형으로 변환하는 것을 말하며 컴파일러에 의해 자동으로 실행될 수 있음

 

축약 대입 연산자

+= 10가지

대입 연산자인 =와 산술 연산자인 +를 합쳐 놓은 듯한 연산자 +=을 축약 대입 연산자

축약 대입 연산자도 대입 연산자이므로 왼쪽 피연산자 부분에는 반드시 변수만이 올 수 있고, 연산의 의미도 대입 연산자인 =와 산술 연산자인 +를 합쳐 놓은 의미와 비슷하다.

축약 대입 연산자

의미

x += y

x = x + y

x -= y

x = x - y

x *= y

x = x * y

x /= y

x = x / y

x %= y

x = x % y

x &= y

x = x & y

x |= y

x = x | y

x ^= y

x = x ^ y

x >>= y

x = x >> y

x <<= y

x = x << y

댓글

Designed by JB FACTORY