연습장

유의사항 및 팁 본문

언리얼 개발자/C++

유의사항 및 팁

도다람 2022. 9. 5. 13:45

주제: 유의사항 및 팁


 

1. 변수의 유효범위

1) 외부에 선언 된 전역변수는 유효범위가 존재하지 않고, 언제 어디에서든 편하게 꺼내쓸 수 있다.

#include <iostream>
using namespace std;

int hp = 10; // 외부에 선언: 전역변수

int main(){

}

 

2) 문제가 발생하는 경우는 함수 내부에서 변수를 만들어 사용할 때 유효범위가 복잡해진다.

스택에 들어가 있는 변수는 { } 중괄호의 범위가 변수의 생존 범위이다.

#include <iostream>
using namespace std;



int main(){

	int hp = 10; // 내부에 선언:

}

 

3) 혹시라도 같은 이름을 두 번 사용할 때 문제가 발생한다.

ex) int i int hp 또는 int count가 빈번하게 사용됨

#include <iostream>
using namespace std;



int main(){

	int hp = 10; // 내부에 선언
	cout << hp << endl;


	int hp = 100; // 이런식으로 까먹고 한 번 더 사용하는 경우
}

 

해결방법

=> 중괄호를 하나 더 만들어서 그 안에 선언을 해준다.

=> 이름을 잘 명명해줄 것.


2. 연산의 우선순위

모든 연산자들의 우선순위가 존재한다.

But, 식을 세울 때 마다 우선순위표를 보며 코딩을 할 순 없기에, 강제적으로 ( ) 소괄호를 넣어 우선순위를 찝어준다.

#include <iostream>
using namespace std;



int main(){

	int hp = 20;
    cout << hp << endl;
    
    bool isEven = ((hp%2) == 0) // 짝수여부 판별
    
    bool isEvenOrDivBy3 = ((hp%2 == 0) || (hp%3 == 0)) //짝수거나 3으로 나뉘는 값인지
}

3. 타입 변환

C++에서는 (short) (float) (unsigned int)가 생략된다.

타입 변환은 항상 주의깊게 보고 진행해야 한다.

#include <iostream>
using namespace std;



int main(){

	int hp = 20;
    cout << hp << endl;
    
    //타입변환
    short hp2 = (short)hp; // 윗쪽 비트 데이터가 짤린 상태로 저장
    float hp3 = (float)hp; // 실수로 변환할 때 정밀도 차이가 있기 때문에 데이터 손실
    unsigned int hp4 = (unsigned int)hp;
}

4. 사칙 연산 관련

1) 곱셈에선 오버플로우를 주의해야 한다.

너무 큰 값을 곱하면 곱셈 결과가 와장창 깨질 수 있다.

 

2) 나눗셈에선 0으로 나누는지를 주의해야 한다.

int hp =123;

int maxHp = 0;

float ratio = hp / maxHp;

==> 크러쉬 발생

 

int hp =123;

int maxHp = 1000;

float ratio = hp / maxHp;

==> 0값 도출

정수와 정수끼리 나누게 되면 정수로 판단하려고 함

때문에 0.123이 정상적인 값이지만 0으로 도출되는 것임

 

'언리얼 개발자 > C++' 카테고리의 다른 글

반복문  (0) 2022.09.12
분기문  (1) 2022.09.12
const와 메모리 구조  (0) 2022.09.05
비트 연산과 비트 플래그  (0) 2022.08.07
비교 연산과 논리 연산  (0) 2022.08.01
Comments