Soft Ware 130

확률 계산 시 부동소수점 오버플로

확률 계산시 소수를 이용했을시 (10*9) / (2*1) - ① (10/2) * (9/1) - ② 위의 경우가 있을시 둘다 계산 식은 같다 . 그러나 부동 소수점 오버플로 방지가 되는것은 ② 번이다. 그럼 이를 이용한 한 예를 보겠다. #include using namespace std; long double probability(unsigned numbers, unsigned picks); int main() { double total,choices; couttotal>>choices)&& choices

cin 에 대해서 !!!

int n=0; cin>>n 일때 입력 큐에 정수가 아닌 문자가 입력될때 1. n의 값은 변하지 않는다. 2. 입력 큐에 잘못된 입력이 그대로 유지 된다. 3. cin 객체의 에러 플래그가 설정된다. 4. cin 메서드 호출이 false 를 리턴한다. cin은 문자열을 입력받을때 빈공간을 생략하고 입력받는다 즉 song eun nam 이런 문자열을 입력시 songeunnam 으로 배열 및 string에 입력된다 . 그럼 빈공백까지 입력 시킬려면 어떻게 처리 해야 될까요? cin.get()이라는 cin의 메서드 함수를 사용하면 된다,

MFC 에서의 __T(x) 의 의미

만일 tchar.h전에 _UNICODE 가 define 되면 다음과 같이 정의됩니다. #define __T(x) L##x 즉 __T("Melong") 은 L"Melong" 으로 치환되게 됩니다. 정의되어 있지 않으면 다음과 같이~ #define __T(x) x 네, __T("x") 는 그냥 "x" 입니다. 그리고 다음과 같이 또 define 되어 있죠 #define _T(x) __T(x) #define _TEXT(x) __T(x) _T 대신 _TEXT라고 써도 됩니다. L"Melong"이 황당하시죠? 이것은 C++문법으로 확장문자열을 뜻합니다. 다음과 같이 확장문자열 포인터를 지정할 수 있죠 wchar_t *p = L"Melong!"; 쉽게 여러 언어를 지원하는 프로그램을 만들기 위해 쓰는 것이다라고 생..

Soft Ware/MFC !! 2011.10.12

전처리기란?

소스파일 -> 전처리기 -> 컴파일러 -> 실행파일 이 순서로 컴퓨터는 처리하는데 사용자가 작성한 프로그램을 실행하기 위해서는 컴파일러로 소스 파일을 실행 파일로 변환해야 하는데 C에서는 컴파일전에 #으로 시작되는 전처리기 지시자 부분을 먼저 처리한다. 이것을 전처리기 (preprocessor)라하고 프로그램에서 사용자 임의로 수식이나 상수를 정의하거나 외부 파일을 삽입하는 등의 작업을 한다. 어떤분은 블로거에서 글을 퍼왔네요 ^^ [출처] 전처리기란??|작성자 김태우 [출처] 전처리기란??|작성자 김태우

#undef 사용 및 정의

#undef는 #define 으로 정의된 매크로를 삭제하고 재 정의할때 사용되는 매크로 이다 . #define TIME 800 #include #undef TIME #define TIME 1400 #include 이예를 보면 TIME이라는 매크로를 800으로 정의하고 ext1.h 파일 에서는 TIME이라는 매크로가 사용되었을때에는 800값이 사용되지만 undef를 이용하여 삭제하고 다시 재 정의를 통해 ext2.h파일에서 1400이라는 값이 사용되게 된다

#ifdef ~ #endif , #ifndef~#endif 정의

#ifdef ~#endif 는 전처리문에서 처리하는 키워드로서 #ifdef 매크로 명 { } #endif 일때 매크로명을 정의해주면 예로 #ifdef START { } #endif 일때 START 매크로가 정의 되어있으면 스코프(블럭 통영범위)영역이 실행될것이며 정의가 되어 있지 않으면 실행되지 않을것이다. 그럼 이젠 #ifndef 에 대해 말해보겠다. #ifndef 매크로명 { } #endif 는 #ifdef 와 다른점은 #ifdef는 정의가 될때마다 실행되는 반면에 #ifndef는 정의되지 않을시에 실행 되고 다음부터는 실행되지 않는다 . 딱 한번밖에 실행되지 않는다는 말이다 ㅎㅎ

#ifndef ~ #endif 와 #pragma once의 차이점

둘다 헤더파일을 한번만 정의할때 사용되는 키워드이다 !! 그런데 이 두개의 차이점은 ? 보통 #pragma once와 #ifndef를 헤더파일 상단에 붙이는데 둘다 헤더파일을 한번만 컴파일 하라는 의미다 차이점은 #pragma는 컴파일러마다 종속적인 사항을 지시하는거라 표준이 아니다 하지만 대부분의 컴파일러들이 지원한다고한다 빌드시 #pragma once를 포함한 헤더파일을 기억해두고 나중에 똑같은 헤더파일을 만나게되면 아예 열어보지도 않고 넘어간다 근데 #ifndef는 언어차원의 표준이다 둘을 비교할때 속도는 #pragma once가 중복된 파일을 만난경우 아예 넘어가므로 약간 빠르다 이것은 오직 인클루드 가드 용도로만 정해져있기 때문이다 하지만 #ifndef는 모든 헤더파일을 열어서 확인하는 방식이다..