산술연산 시 주의점

Crat3 ㅣ 2023. 8. 7. 16:38

1. 정수의 나눗셈( int / int )

정수를 정수로 나누었을 때 소숫점 이하는 버림한다(암시적 형 변환).

소숫점도 챙기고 싶다면 명시적 형 변환을 사용한다.

static_cast<double> ( 100 / 3 );

 

2. 산술연산 우선 순위

괄호 내부 계산 > 곱셈, 나눗셈 > 덧셈, 뺄셈

 

3. Divide by Zero

숫자를 나눗셈할 때 0으로 나누지 않도록 주의하여야 한다.

 

4. 오버플로우, 언더플로우

형식의 지정된 범위를 넘지 않도록 주의하여야 한다.

(unsigned) char : 0~255

(unsigned) short : 0~65535

(unsigned) int : 약 42억

 

5. 부호 비트

음수의 int 형 변수가 오른쪽 시프트 연산자로 비트가 하나씩 밀리게 되면 최상위 부호 비트가 유지된 채로 한칸씩 밀리게 된다. 

ex) 1000 0000 (-128) ->(Rsh)-> 1100 0000 (-64)

최상위 부호 비트가 켜진채로 한 칸씩 밀리기 때문에 계산에 유의하여야 한다.

이를 신경쓰고 싶지 않다면 unsigned int 형으로 계산하는 것이 편할 수 있다.

'복습' 카테고리의 다른 글

함수 객체 ( functor ; 펑터 )  (0) 2023.10.06
함수 포인터  (0) 2023.10.06
우선순위 큐 (priority_queue)  (1) 2023.10.05
가위 바위 보  (0) 2023.08.07
16진법과 2진법의 관계  (0) 2023.08.07