C++

    비트연산 테스트 코드

    비트연산 테스트 코드

    비트연산을 할 일이 생겼는데 감을 잃어서 다시 확인차 해보았습니다. #include int main() { int a = 64; printf("%d & 0xFF = %d\n", a, a & 0xFF); printf("12 & 3 = %d\n", 12 & 3); printf("12 & 7 = %d\n", 12 & 7); printf("12 & 7 = %d, %d > 1 = %d\n", 12 & 7, 12 & 7, (12&7) >> 1); return 0; } 결과는 아래와 같습니다. 64 & 0xFF = 6412 & 3 = 012 & 7 = 412 & 7 = 4, 4 > 1 = 2

    #define 속에 do while (0) 문장의 의미

    #define 속에 do while (0) 문장의 의미

    이 질문의 시작은 딱 이 문제이다.http://stackoverflow.com/questions/923822/whats-the-use-of-do-while0-when-we-define-a-macro ( 구글 검색 결과 : https://www.google.co.kr/?gfe_rd=cr&ei=WINUU7XDCOK8iAelsYGYDQ#newwindow=1&safe=off&q=c%2B%2B+define+do+while+0 )(예시)#define TEST(x) do { \ printf("%d\n", x); \} while (0) 위 주소에서 얻을 수 있는 정보는Macro는 정확히 할당이 되고, 따라서 { } 으로 묶으면 (scope이 생기기 때문에:제 생각) 안된다. 입니다. 마지막으로 이 예제를 보면 확실합니..

    엔터(enter,개행문자) 입력받기.

    1. 개요 엔터 혹은 개행문자라 불리는 '\n'을 입력받아서 처리하는 코드를 작성해봤습니다. 2. 방법 방법은 2가지로 실험해봤습니다.1) gets2) getchar scanf는 엔터와 몇가지 아스키코드는 입력받지 않는 것으로 취급하기 때문에 논외로 하였습니다. 3. Source 1) gets #include int main() { char ch; gets(&ch); printf("%d\n", ch); if (ch == '\n') printf("Detecting Enter\n"); return 0; } 2) getchar #include int main() { int i; i = getchar(); printf("%d\n", i); if (i == '\n') printf("Detecting Enter\n..

    상속에 대해서

    상속에 대해서 보다가 궁금한게 생겼다. virtual 함수를 선언할 때 {] 뒤에 ;가 있는 것과 없는 것이 차이가 존재할까? 결론은 차이가 없다이다. (적어도 내 컴파일러는 동일하게 동작하였다.) #include class Test { public: virtual void render() {} virtual void draw() {}; }; class Exam : Test { public: void render() { printf("This is render() \n"); } void draw() { printf("This is draw() \n"); } }; int main(int argc, char *argv[]) { Exam ex; ex.draw(); ex.render(); return 0; }

    함수의 괄호 뒤에 const를 넣는 이유에 대해서

    여기 저기 검색을 해보니 함수 괄호 뒤에 const를 넣는 의미는, 멤버 변수의 값을 변경하지 않는다. 라는 의미라고 하더라구요(그리고 함수 괄호 뒤에 const를 넣는 함수는 멤벼함수일때만 가능하다고 하네요.) 간단한 실험을 준비해봤습니다. 1. 아래의 코드는 잘 실행되는 코드입니다. #include #include using namespace std; class Tester { private: char m_data[24]; public: void setData(char *input) { strcpy(m_data, input); } const char* getData() const { return m_data; } }; int main() { Tester test; test.setData((char*)..

    printf에서 %d %09d %19d의 차이에 대해서

    %d는 int 형을 출력하는 것인데, %와 d사이에 여러 옵션을 넣을 수 있다. 그중에 아래의 것들을 살펴본다. #include int main(int argc, char *argv[]) { int num = 123456; printf("%09d\n",num); printf("%9d\n",num); printf("%19d\n",num); printf("%d\n",num); return 0; } output은000123456 123456 123456123456 이다.

    2차배열 동적 할당, 교환하기 등.

    아래 블로그를 참조하였습니다.http://gshan85.tistory.com/34 요약 : 2차 배열로 생성하고, 1차 배열을 덮어 씌우는데, 그 1차배열은 할당, 삭제가 가능하다. #include #include using namespace std; void swap( char **tmp ) { for( int i=0;i

    c++ / 7. POD를 아십니까?

    c++ / 7. POD를 아십니까?( 데이터 구조, Plain old data structure ) 일을 하다가 알게된 개념으로 Array를 POD와 Non POD로 만들어진 2개의 사이에서 삽질을 하다가 알게된 개념입니다. POD 또는 PODS. 이 개념은 C언어의 Struct나 built-in-type과 동일한 메모리 구조를 갖는 object를 의미합니다.즉 memset이나 memcpy와 같은 단순 메모리 복사가 가능한 것인데 여기서 C++의 클래스와 다른 부분입니다. POD의 조건은 다음과 같습니다.1. built-in-type2. 가상 함수가 없고 사용자 정의 할당자와 소멸자를 갖지 않은 class의 object3. non POD를 non-static 멤버로 가지지 않은 class의 object ..