유의사항

namu·2022년 7월 1일

1) 변수의 유효범위
전역 변수

스택
{} 중괄호의 범위가 생존 범위
같은 이름 두 번 사용할 때 문제

2) 연산 우선순위
짝수 여부
bool isEven = ((hp % 2) == 0);

짝수거나 3으로 나뉘는 값인지
bool isEvenOrDivBy3 = (((hp % 2) == 0) || ((hp % 3) == 0));

3) 타입 변환
int hp = 20;
short hp2 = hp;
float hp3 = hp;
unsigned int hp4 = hp;

위는 모두 컴파일되며, 아래처럼 캐스팅이 생략된 형태.
short hp2 = (short)hp;
float hp3 = (float)hp;
unsigned int hp4 = (unsigned int)hp;

작은 바구니의 것을 큰 바구니로 옮길 때는 괜찮지만, 반대의 경우 문제가 될 수 있음.

int hp = 77777;
short hp2 = hp; // 상위 비트 데이터가 짤린 상태로 저장
float hp3 = hp; // 실수에 맞는 데이터 저장 형식으로 바꾸어 줌. 실수로 변환할 때 정밀도 차이가 있기 때문에 데이터 손실
unsigned int hp4 = hp; // 비트 단위로 보면 똑같은데, 부호비트 유무가 다름.

4) 사칙 연산 관련
곱셈

  • 오버플로우

나눗셈

  • 0 나누기 조심 : 실행 중 크래시
  • 실수 관련 : 두 정수 나눗셈 결과는 정수. 실수형이 정수형보다 우선순위가 높기 때문에 둘 중 하나가 실수형이면, 결과도 실수로 나온다.
profile
안녕하세요

0개의 댓글