연산자는 값을 결합하는 기호다. 같은 기호도 피연산자 타입에 따라 정수 나눗셈이 되기도 하고 부동소수 나눗셈이 되기도 한다.
자주 만나는 연산
`+ - * / %`가 산술이다. `%`의 피연산자는 정수여야 한다. 비교는 `< > <= >= == !=`이고, 논리 조합은 `&&`와 `||`다. 이 둘은 왼쪽이 결과를 정하면 오른쪽을 계산하지 않는다. 대입은 `=`이고, 비교와 글자가 다르다.
int a = 7;
int b = 2;
int q = a / b; // 3
int r = a % b; // 1
double x = a / double{b}; // 3.5변환은 조용히 일어난다
`int`와 `double`을 한 식에 두면 정수가 부동소수로 올라간다. 이것을 일반 산술 변환이라고 부른다. 부호 있는 정수와 부호 없는 정수를 섞으면 값이 큰 양수로 바뀌어 비교가 예상과 달라질 수 있다. 섞어야 하면 캐스트를 눈에 보이게 쓴다.
`static_cast<int>(x)`는 의도한 변환이다. C 스타일 `(int)x`는 너무 많은 변환을 한 문법으로 허용하므로 새 코드에서는 피한다.
댓글
0개아직 댓글이 없습니다.