c++ 14

오늘 구현중 에러사항

templateint Write(T* tmp) {return sizeof(T)} 할 시, tmp가 char[10] 타입이라면, sizeof(T)의 값은 char의 크기인 1일 것이고,int Write(T& tmp) 라면 char[10] 크기 그 자체인 10이 된다. 배열이 함수의 매개변수로 입력되면 char[] -> char* 타입으로 캐스팅 되기 때문에 그런 것으로 보인다. template bool Write(T& src) { return Write(reinterpret_cast(&src), sizeof(T)); } bool Write(void* src, uint32 len); 실제로 오늘 구현한 클래스 내부중 이러한 내용이 들어갔었는데, 처음에는 templatebool Write(T* src) { r..

c++ 2025.04.21

c++ 공부

타입 캐스팅---------------------------------------------타입 변환 유형---------------------------------------------1.값 타입 변환 의미를 유지하기 위해서, 원본 객체와 다른 비트열 재구성int a = 5; float b = a;   클래스에서는 일반적으로 안 됨 (예외: 타입 변환 생성자, 타입 변환 연산자) class Dog() {public:            Dog(const Knight& k){ // 타입 변환 생성            k.age = age_;}            operator Knight() {return (Knight)(*this)} // 타입 변환 연산자 }Knight knight;Dog dog =..

c++ 2025.03.03

c++ 공부

// CPP_1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.//#include // float 4byte 1byte 부호 8byte(지수) 23byte(유효숫자) // 0b11 + 0b0.011 = 0b11.011 = 0b1.1011 * 2^1 정규화시 기수는 반드시 1이여야 함 즉 1.xxx 꼴// 지수는 unsigned로 +127해야함 // 0100 0000 0101 1000 0000 0000 0000 0000 = 0x 40580000 float fa = 3.375f; // 0x40580000// double 8byte 1byte 부호 11byte(지수) 52byte(유효숫자)// 0b11 + 0b0.011 = 0b11.011 = 0b1.1011..

c++ 2025.02.27

c++공부

#include //bit flag를 사용할 때는 unsigned를 사용하는게 좋다. 왜냐하면 signed 변수들의 비트 쉬프트연산에 >>는 부호비트값을 바꾸지 않음 ex) 1011 1010을 >> 1하면 1101 1101이 됨enum STATE: uint16_t { INVINCIBLE = 0b1000, STUN = 0b0100, CHANGE = 0b0010, NERVOUS = 0b0001};int main() { uint16_t flag = 0b0000; flag |= (STATE::INVINCIBLE | STATE::STUN); if (flag & STATE::INVINCIBLE) { std::cout 어셈블리어중 movzx는 좌측 값의 타입크기가 우측값보다 커도 값을 복사하겠다는 의미,test ..

c++ 2025.02.24