C Language

C언어 수식과 연산자의 의미 학습하기

567Rabbit 2024. 6. 13. 20:57

 

수식(expression)

 

 

- 상수, 변수, 연산자의 조합

- 연산자와 피연산자로 나누어진다.

 

 

3.14 * radius

*는 연산자이고  3.14, radius는 피연산자이다.

 

 

단항 연산자 : 피연산자 수가 1개

이항 연산자 : 피연산자 수가 2개

삼항 연산자 : 연산자의 수가 3개 (c언어에서 많이 사용한다.)

 

 

 

 

삼항연산자

ex)

x ? y : z ;

=> x가 조건, true면 y, false면 z가 된다.

 

 

삼항 연산자는 조건을 검사하고, 조건이 참이면 첫 번째 표현식(여기서는 y)이 실행되고,

거짓이면 두 번째 표현식(여기서는 z)이 실행된다.

따라서 x가 참이면 y가 선택되고, 거짓이면 z가 선택된다.

 

 

 

 

기능에 따른 연산자의 분류

 

 

 

산술 연산자

 

+ : 덧셈

- : 뺄셈

* : 곱셈

/ : 나눗셈 몫

% : 나머지 연산자(modulus operator) : 모듈러 연산자

 

 

 

 

증감 연산자

 

++ : 1씩 더한다

-- : 1씩 뺀다

 

y=++x  증가 후 대입하고,

 

y=x++  대입 후, 증가된다.

 

 

 

 

대입 연산자

 

- 아래는 가능한 연산이다.

y = x = 3

 

 

 

복합 대입 연산자

:  +=처럼 대입연산자 =와 산술연산자를 합쳐놓은 연산자이다.

 

복합대입 연산자          의미

      x += 1                x = x+1

 

 

 

 

관계 연산자

 

== : 같다

!=  : 다르다

>    : 크다

>=  : 이상이다

<    : 작다

<=  : 이하이다

 

 

 

 

논리 연산자

 

&&    AND 연산      두 조건이 모두 참이어야 참이다 

||       OR 연산         두 조건 중 하나만 참이어도 참이다

!       NOT 연산      

 

NOT 연산

- 관계 수식이나 논리 수식이 참이면 1이 생성되고 거짓이면 0이 생성된다.

- 피연산자의 참, 거짓을 가릴때는 0이 아니면 참이고 0이면 거짓으로 판단한다.

- 음수는 거짓으로 판단한다.

 

!0    // 식의 값은 1

!3    // 식의 값은 0

!-3   // 식의 값은 0

 

result = !1;              // result에는 0이 대입된다

result = ! (2 == 3)   // result에는 1이 대입된다

 

 

 

 

조건 연산자

 

absolute_value = ( x > y ) ? x : y ;  // 절대값 계산

max_value = ( x > y) ? x : y ;          // 최대값 계산

min_value = ( x < y ) ? x : y ;          // 최소값 계산

( age > 20 ) ? printf("성인") :  printf("청소년")

 

 

 

 

 

비트 연산자

 

각각의 자리수마다 AND 연산을 한다. 즉, 비트마다 짝지어서 연산을 하는 것이다.

 

 

 

XOR을 이용한 암호화

 

- 하나의 문자를 암호화하기 위해서는

encrpted_data = data^key; 하면 된다.

복호화도 data = encrpted_data^key; 하면 된다.

 

 

 

 

비트 이동 연산자 ( shift 쉬프트 연산이라고도 한다.)

 

- 빠른 연산이 가능하다.

 

<< 한 칸씩 왼쪽으로 옮기면, 2배 시킨것과 같다.

>> 한 칸씩 오른쪽으로 옮기면, 나누기 2를 한 것과 같다.

 

 

 

 

 

형변환

- 실행 중에 데이터의 타입을 변경하는 것이다.

 

올림변환

double f;

f = 10

=> 10.0으로 저장된다.

 

내림변환

int i;

i = 3.141592

=> 3으로 저장된다. (소수점 이하 버림의 기능이 가능하다)

 

자동 형변환

int 10 + double 1.2345

=> double 10.0 + double 1.2345  // int가 double 형으로 승급된다.

=> 11.2345                                     // 전체 수식의 결과값도 double 형이 된다.

 

형변환 하는 방법

(int)1.23456     // int형으로 변환

(double) x        // double형으로 변환

(long) (x+y)     // long형으로 변환

 

 

 

 

 

결합 규칙

 

- 만약 같은 우선순위를 가지는 연산자들이 여러개 있으면 어떤 것을 먼저 수행하여야 하는가?에 대한 규칙