[ 언어 및 문법 ]
[Python] 삼항 연산자 (3항 연산자)
[ 3항 연산자 ] C/C++에서 x = [조건]? a : b; 와 같이 사용하던 3항 연산자를 Python에서는 다음과 같이 사용하면 된다! # ex1 x = a if [조건] else b # True일 때의 값을 먼저 대입 후 if~else # ex2 [a, b] = [b, a] if a > b else [a, b] # 값 swap (unpacking) [ cf. 만약 if문만 쓰고 else문은 필요 없는 상황이라면? ] # ex3 [a, b] = [b, a] if a > b else break # 이건 error! (값 대입 상황) # ex4 print("hi") if a > b else break # 이건 ok (값 대입이 아닌 print 이므로) ex3과 같이 값을 대입하는 경우에는 else b..
[C++] enum vs #define
enum 열거형 상수 자동으로 index 매겨짐 .h 등의 전역에 선언해두면 #define과 마찬가지로 모든 파일에 적용 But, 클래스 내부에 선언해두면, 그 클래스 내부에서만 사용 가능한 상수로 사용 가능 // IH.h class IH { public: enum FEATURE { MEAN, // 0 VARIANCE, // 1 ... } } // main.cpp cout
[C++] bool vs BOOL
bool C++ 자료형 char, 1Byte true(1), false(0) c++에서는 이걸 쓰면 됨! BOOL C에서 사용, But 자료형이 따로 없기 때문에 #define으로 따로 매크로 정의해줘야 함 int, 4Byte TRUE, FALSE => 0, 1이 아닐 수 있음!
[C++] NAN, isnan()
NAN float이나 double형으로 표현되는 부동소수점 값이 컴퓨터가 허용하는 범위를 넘을 때 출력 -nan(ind)로 출력됨 선언만 하고 값 할당이 되지 않은 상태면(undefined) 숫자 변수의 경우엔 NAN 의 isnan() 함수를 통해서 NAN인지 아닌지 판별 가능! (NAN 자체로 판별 X)
[C++] 가비지(Garbage) & 가비지 컬렉션(Garbage Collection) / 포인터 & 메모리 동적할당
가비지 & 가비지 컬렉션 가비지 : 포인터(p1)에 다른 포인터(p2)에 담긴 주소값을 옮겨 담아서 p1이 다른 곳을 가리키면, 원래 가리키던 메모리는 아무도 사용하지 않고 아무도 가리킬 수 없는 상태가 되는데, 이때 이 아무도 사용하지 않는 쓰레기 메모리가 가비지! 가비지 컬렉션 : 시스템 상에서 가비지 컬렉터가 이 가비지를 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것 (수동으로 직접 해제해주지 않아도 됨) cf. 댕글링 포인터 : 이미 동적 할당된 메모리를 해제했는데 여전히 가리키고 있는 포인터. p1과 p2가 한 메모리를 동시에 가리키고 있다가 그 중 한 포인터에 의해 메모리를 해제한 경우! ex. 블록 밖으로 나가면서 Mat이 자동으로 해제됐는데 포인터는 그대로 가리킬 때 포인터 대입 (..