본문으로 바로가기

[C언어] 기본연산자 #1 (대입, 산술)

category C 2014. 5. 2. 15:08

연산자의 종류

 

기능별 종류

연산자

산술 연산자

+ - * / %

부호 연산자

+ -

대입 연산자

= 복합 대입 연산자

관계 연산자

== != <= < >= >

증감 연산자

++ --

포인터 연산자

* & []

구조체 연산자

. ->

논리 연산자

|| && !

비트 연산자

| & ~ >> <<

삼항 조건 연산자

? :

쉼표 연산자

,

sizeof 연산자

sizeof

캐스트 연산자

(type) type()

괄호 연산자

()

C++ 연산자

new delete :: .* ->*

 

대입 연산자(Assignment Operator)

대입(Assignment)이란 변수에 어떤 값을 집어 넣는 동작이며 대입 연산자는 변수의 값을 변경할 때 사용한다.

a = b 의 의미는 수학에서는 a와 b는 같다(a is equal to b)는 의미이지만 C언어에서는 b의 값을 a에 넣는다는 뜻이다. 값을 대입한다 또는 할당한다는 의미이다.

int a;

a = 1;

위의 식을 한번에 쓰자면 int a = 1; 로 쓸 수 있다.

1 = a; (x) 상수인 1을 좌변으로 쓸 수 없다.

 

int a, b, c;

a = b = c = 0; (o)

 

이해안되는 문제

char name[10] = "Neo"; (o)

 

<질문>

int score;

score = 100; (o)

---------------

char name[10];

name = "Bob"; (x)

왜 안되는 것일까?

 

산술연산자

수학 /  C언어

+          +

−         -

×         *        알파벳 x와 헷갈리기 쉽기 때문에 *를 쓴다. 또 키보드에 ×가 없다.

÷         /        1÷2 를 1/2 쓸 수 있다.

mod      %       나머지 연산자(modulo) - 굉장히 유용하게 쓰인다.

mod 는 정수론에서 많이 쓰이며, 정수론은 암호학을 공부하기를 위한다면  기본이 되는 학문이며, RSA는 아주 큰 소수 두개를 곱하면 소인수 분해가 어려워지는 점을 이용하는 암호 알고리즘이다. 이 알고리즘 안에 mod 가 이용된다.

8 mod 3 = 2

예) 84717273 를 6 로 %(mod) 하면 0~5 되며 + 1 하면 1~6 범위가 된다.

int a = 84717273;

int b = a % 6 + 1;

 

정수 op 정수 : 정수

정수 op 실수 : 실수

실수 op 정수 : 실수

실수 op 실수 : 실수

 

int kor = 40;

int eng = 20;

int mat = 40;

int tot = kor + eng + mat;

float ave = tot / 3; // 33  정수

float ave = tot / 3.0f; // 실수

float ave = (float)tot / 3; // 실수

float ave = (float)tot / 3.0f; // 실수