연산자의 종류
기능별 종류 | 연산자 |
산술 연산자 | + - * / % |
부호 연산자 | + - |
대입 연산자 | = 복합 대입 연산자 |
관계 연산자 | == != <= < >= > |
증감 연산자 | ++ -- |
포인터 연산자 | * & [] |
구조체 연산자 | . -> |
논리 연산자 | || && ! |
비트 연산자 | | & ~ >> << |
삼항 조건 연산자 | ? : |
쉼표 연산자 | , |
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; // 실수