본문 바로가기

프로그래밍/C , C++5

QNAN 과 IND 에 대해서 프로그래밍을 하시다 보면 아무리 봐도 소스나 계산식에는 문제가 없는데 오동작을 하게 되는 경우가 있습니다.저도 최근 그런 문제를 겪어 골머리를 썩혔는데요, 범인은 -1.#QNAN 이었습니다.그럼 IND 와 QNAN 이란 무엇인가??둘다 FPU 에서 이해할 수 없는 실수값을 처리할때 발생하는 문제 입니다.IND 는 정의 되어있지 않은 숫자 , QNAN 은 값을 정할 수 없음, SNAN 은 유효하지 않은 값으로 MSDN 에서도 확인하실 수 있습니다. ( NAN 은 Not a number )그럼 앞에 붙는 -1.# 나 1.#는 무엇이냐면 1.# 는 양수 무한대, -1.#는 음수 무한대 입니다.C 에서는 실수를 처리할때 지수부와 가수부를 나눠 저장하는데 지수부와 가수부의 사용 비트가 정해져 있기 때문에정확하게 .. 2012. 8. 17.
아주아주 간단한 C++ 계산기 소스 클래스를 사용한 아주아주 간단한 계산기 소스 입니다. 입문 유저를 위한 초보 소스입니다. 덧셈뺄셈곱셈나눗셈만 가능합니다. 소스에 간단하게 주석처리를 하였으나 소스 자체가 쉽고 간단한 것이여서 단순히 클래스 사용 방법에 대해서 참고하시길 바랍니다. 클래스 해더에서 선언하고 cpp에서 정의를 하는 방법과 main.cpp에서 클래스의 맴버들을 사용하는 방법을 참고하는 용도로 보시면 되겠습니다. 2010. 6. 6.
너무나도 중요한 포인터 !! 포인터는 선언된 자료형을 따라간다. 예를들어 int 형 변수의 포인터를 만들고 싶으면 int 형 포인터를 만들어야 한다. 포인터는 주소를 이용하여 사용하는 것이다. int *p = 0; 이런식으로 포인터를 초기화할때 0 은 Null 값을 뜻한다.(\0) 고로 이 포인터는 아직 아무 주소도 가르키지 않고 있는것이다. int A = 100; int *p = &A; 이렇게 되면 포인터 p 는 A의 주소를 가져오게 된다. p의 값은 A의 주소가 들어가게 된다. -------------------------------------------------------------------------------------------------------&p = p의 주소값이 반환된다. --------------------.. 2010. 6. 6.
Cpp마다 변수를 같이쓰자 !! extern 한 프로젝트에 여러가지 cpp를 사용하는데 어떠한 변수를 cpp끼리 같이 쓰고싶을때가 있을것이다. 이럴때 사용되는 것이 extern 이다. extern int A; 예를들어 A.cpp 에 int A 라는 변수가 있다. 그런데 B.cpp에서도 이 변수값을 그대로 사용하고 수정하고 싶다. 그럴경우 A.cpp에는 int A 라고 선언하여 사용하고 B.cpp 에서는 extern int A 라고 선언을 해주면 된다. 다른 cpp에서 사용중인 int A라는 값을 찾아서 B에서도 같이 사용할수 있게 되는것이다. 간단하게 cpp끼리 변수를 공유하여 사용할수 있는 방법이지만 , 여러가지 문제가 생길수도 있는 방법이다. C++ 에서는 이런식의 방법보다 class를 이용하여 해결하는게 바람직하다고 본다. 물론 간단한 프로그.. 2010. 6. 6.
문자열을 쉽게 사용하기 ! String #include 헤더를 추가해야 사용할수 있다. strcpy(A,B); 문자열을 복사하는것이다.A로 B에 들어있는 문자열을 복사하는 것이다. " " 를 사용하면 그 문자를 복사할수있다. strcat(A,B); 문자열을 더하는것이다. A에 B문자열을 덧붙이게된다. strcmp(A,B); 문자열을 비교하는 것이다. strrev(); 문자열을 반전시킨다. strlwr(); 대문자를 모두 소문자로 변환한다. strupr(); 소문자를 모두 대문자로 변환한다. strlen(); 문자열의 길이를 구한다.(NULL값은 제외된다. NULL값까지 더한 정확한 값은 +1 하면된다.) ※ str 뒤에 n 을 붙이면 지정된 숫자만큼만 행동을 하게된다. 예를 들어 strncpy(A,B,5); 이런식이면 A에 B를 복사하는것인데.. 2010. 6. 6.