기본 콘텐츠로 건너뛰기

라벨이 c++인 게시물 표시

time_t UTC vs local

alexnet jin: inline time_t SU_UTCTime() { // _mkgmtime64() :  struct tm에 들어간 시간을 1970-01-01 00:00:00 을 기본으로 초단위 값으로 반환 // _mktime64() 함수는 현재 system local time zone값이 더해진 시간을 기본으로 초단위 값으로 반환 return time(nullptr); } inline time_t SU_LocalTime() { time_t Time = time(nullptr); tm curTM; _localtime64_s(&curTM, &Time); return _mkgmtime64(&curTM); }

[C/C++[ shift 연산 음수로 이용하기

x = k >> -e // 이건 뭐 어쩌자는 건지? c++ 소스 중에  오늘 위와 같은 형식의 shift 연산을 보고 결과가 궁금해서 테스트를 해봤다. 결론은 shift 연산자 우측에 음수가 오면 무조건 0 즉 -e 이렇게 쓴것은 e 의 값이 음수라는 이야기 이다. #include "stdafx.h" template<typename T> void test_minus_shift(T value) { //T value = 1; T nShfitLeft = value << 1; T nShfitLeftMinus = value << -1; T nShfitRight = value >> 1; T nShfitRightMinus = value >> -1; } int _tmain(int argc, _TCHAR* argv[]) { test_minus_shift<int>(1); // nShfitLeft=2, nShfitLeftMinus=-21474836, nShfitRight=0, nShfitRightMinus=0 test_minus_shift<int>(8); // nShfitLeft=16, nShfitLeftMinus=0, nShfitRight=4, nShfitRightMinus=0 test_minus_shift<int>(0xfc31); // nShfitLeft=129122, nShfitLeftMinus=-21474836, nShfitRight=32280, nShfitRightMinus=0 test_minus_shift<unsigned>(1); // nShfitLeft=2, nShfitLeftMinus=21474836, nShfitRight=0, nShfitRightMinus=0 test_minus_shift<unsigned>(8); // nShfitLeft=16,...

[c++], lvalue, rvalue 에 대한 추가적 정리

 Lvalue를 대입 연산자 왼쪽에 있는 값, RValue를 대입 연산자 오른쪽에 있는값으로 알고 있는 사람이  많습니다. C에서는 이 개념이 맞지만 C++ 98/03에서는 약간 다른 개념으로 사용됩니다. 저도 C에서의 개념으로만 알고 있었는데, 컴파일러와 정적 분석 도구로, 오류 원인을 추적하다 보니, 개념을 좀 더 명확하게 할 필요가 있어서, 구글링(?) 하다가 좋은 자료가 있어 공유 합니다. 참고 링크:  http://scor7910.tistory.com/66 이상입니다.

소숫점 0.0 으로 나눈 결과 표시 방법

c, c++ format string "%f" 나 "%g" 사용중 결과가 아래와 같이 나오는 경우가 있다. 1.$ 1.#J 1.#IO 1.#INF00 헛~ 이건 뭐임? stackoverflow.com에 관련 내용이 있었음 http://stackoverflow.com/questions/840081/what-does-floating-point-error-1-j-mean 내용을 읽어본 즉 소숫점 0.0으로 나눈 경우와 관련이 있다고 하는 군요. (Devide by floating point zero) 결론적으로 포맷에 따라 다른 결과를 보여줄 뿐, 같은 내용이었습니다. 참고하세요. 아래는 MSVS 2010 Console Application 프로젝트에서 테스트한 결과 입니다. //------------------------------------------ double a = 0.0; printf("%.1f\n", 1.0 / a);  // +inf printf("%.1f\n", -1.0 / a); // -inf printf("%.1f\n", a / a);    //  NaN printf("------------------------------------------\n"); printf("%.2f\n", 1.0 / a);  // +inf printf("%.2f\n", -1.0 / a); // -inf printf("%.2f\n", a / a);    //  NaN printf("------------------------------------------\n"); printf("%.3f\n", 1.0 / a);  // +inf printf("%.3f\n", -1.0 / a); // -inf pr...

linux c++ 개발 환경 지원

http://blog.naver.com/PostView.nhn?blogId=oops8582&logNo=90044190292&redirect=Dlog&widgetTypeCall=true  - 리눅스 개발 환경 구축 http://www.kernel.bz/os/01/os0103.htm  - 리눅스 c 컴파일러및 make 사용법 http://k4425515.egloos.com/2828610  - 리눅스 c 라이브러리