문제

내가 이것을 사용할 때

#include<time.h>
//...
int n = time(0);
//...

시간을 int로 변환하는 것에 대한 경고를받습니다. 이 경고를 제거하는 방법이 있습니까?

도움이 되었습니까?

해결책

시간이 돌아옵니다 time_t 그리고 정수가 아닙니다. 그 유형을 사용하는 것이 바람직하게는 int.

정말로 필요한 경우 int, 그런 다음 명시 적으로 타이핑하십시오.

int n = (int)time(0);

다른 팁

예, n을 a로 변경하십시오 time_t. 대부분의 / 모든 시스템에서 Time.h의 서명을 보면 그것이 반환되는 것임을 알 수 있습니다.

#include<time.h>
//...
time_t n = time(0);
//...

주목하십시오 아라크 맞습니다 : 32 비트 int를 사용하는 것은 최소한 문제입니다. 2038 버그로 인해. 그러나 정수 N (Time_T가 아닌)의 모든 종류의 산술은 코드가 해당 버그를 조기에 트립 할 확률 만 증가한다고 생각해야합니다.

추신 : 원래 답변에서 명확하지 않은 경우 컴파일러 경고에 대한 최상의 응답은 거의 항상 경고하는 상황을 해결하는 것입니다. 예를 들어, 더 높은 정밀 데이터를 낮은 정밀 변수로 강요하면 정보가 손실됩니다. 컴파일러는 누군가가 나중에 훨씬 나중에 여행하지 않는 지뢰 버그를 만들었을 수도 있다고 경고하려고합니다.

나는 당신이 Visual C ++를 사용하고 있다고 생각합니다. 반환 유형 time(0) ~이다 64bit int 당신이 프로그래밍 중에도 32bit 플랫폼과 달리 플랫폼 g++. 경고를 제거하려면 할당하기 만하면됩니다 time(0) 에게 64bit 변하기 쉬운.

int 대신 Time_t 유형을 사용하고 싶을 것입니다.

예제를 참조하십시오 http://en.wikipedia.org/wiki/time_t.

그 이유는 time () functions가 time_t 시간을 반환 하므로이 경우 int 또는 uint에 정적 캐스트를 수행해야 할 수도 있습니다. 이런 식으로 작성하십시오.

time_t timer;
int n = static_cast<int> (time(&timer)); // this will give you current time as an integer and it is same as time(NULL)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top