3.28 연산자

*연산이란?
데이터를 처리하여 결과를 산출하는 것
*연산자(Operator)
연산에 사용되는 표시나 기호(+,-,*,/,%,= 등)
*피연산자(Operand)
연산 대상이 되는 데이터(리터럴, 변수)
*연산자의 종류*
< 단항 연산자 >
1. 부호 연산자 ( + / - )
★ 부호 연산자의 산출 타입은 int ★
2. 증감 연산자 ( ++ / -- )
++x 전위 / 후위 x++
*증감 연산자가 변수 뒤에 있으면(후위)
다른 연산자 먼저 처리 후 증감 연산자 처리*
개념은 공부하되, 그냥 풀어서 써라.
3. 논리 부정 연산자 ( ! )
< 이항 연산자 >
1. 산술 연산자
여기서 v1/v2 (int타입)을 double로 자동 형변환이 아닌, 강제 형변환을 하는 이유는
int v1/v2의 값은 2이므로 이것을 그대로 double 타입으로 변환하면 2.0이 나오기 때문이다.
우리가 원하는 값은 2.5이기 때문에, v1이나 v2 중 '하나' 혹은 '둘 다' double 타입으로 강제 형변환 후
연산이 수행되어야 한다.
숫자 리터럴이 있을 때!!!
아래를 꼭 기억하자!!!
(1) 정수 리터럴 ==> 무조건 int 정수로 가정
(뒤에 l/L이 없는한)
(2) 실수 리터럴 ==> 뒤에 f/F가 없는한,
double 타입으로 가정
오른쪽 이미지에서
double result = temp / 10; 이 아닌
double result = temp / 10.0 을 해 준 이유도, 바로 위의 내용과 같다.
정수 리터럴은 기본적으로 int타입으로 가정하기 때문에,
temp (int타입) ->3 / 10 (int타입) 을 하면 결과는 0.333... 을 int로 표현한 0이 나온다.
따라서, double result = temp / 10; 에서 result 값을 출력하면 0.0이 된다.
우리가 원하는 값은 0.3이므로, temp을 실수 리터럴 10.0 (double타입)으로 나눠줘야 한다.
*char 타입에서의 연산
리터럴은 상수이므로 형변환 하지 않는다.
하지만 c2는 변수이므로 형변환 된다.
c2 + 1을 하면 1이 int타입이기 때문에 연산 시 int 타입이 나온다.
*Overflow의 발생
*NaN과 Infinity 연산
2. 문자열 연산자
피연산자 중 문자열이 있으면 문자열로 결합
3. 비교연산자 & 논리연산자
< 삼항 연산자 >