문제

둘의 차이가 왜 나는지 time_t에 의해 반환되었습니다. difftime( time_t t1, time_t t2) 방법을 double?정밀도 요구 사항이 어디서 나오는지 알 수 없습니다.

도움이 되었습니까?

해결책

time_t가 표준에서 arithmetic type capable of representing times로 정의되기 때문에

그것이 그것에 대해 말하는 모든 것에 관한 것입니다. 정수 일 필요는 없으며 초를 나타낼 필요가 없습니다. 10 개의 -43 초의 해상도로 시간을 표현할 수있는 10 개의

의 해상도로 시간을 표현할 수있는 부동 소수점 유형 일 수 있습니다.

C99 7.23.1 Components of time의 인용문은 (약간 기사) :

선언 된 유형은 time을 나타내는 산술 유형 인 clock_ttime_t입니다. clock_t 및 time_t에서 표현할 수있는 시간 범위와 정밀도는 구현이 정의되어 있습니다.

다음과 같은 시간의 차이를 맹목적으로 운동하는 사람들 :

delta = time_end - time_begin;
.

는 모든 플랫폼에서 코드가 작동하지 않는다는 것을 알 수 있습니다.

이제는 EPOCH 이후의 간단한 초가 아닌 플랫폼을 모르지만 EPOCH 이후의 간단한 초가 아닌 모든 플랫폼을 알지 못하지만 PERANACODICETAG 코드를 통해 처럼 처럼 가정에 의해 물렸다. A는 연속적이지만 실제로는 필요하지 않으며 EBCDIC을 사용하는 메인 프레임 제품에서 잘 작동하지 않습니다. 그리고, 아직도 무거운 분명히 '60s : -)

이후로 죽어가는 데에도 불구하고 사용

C99 Rationale 문서는 다음과 같습니다.

유형 Zclock_t는 기존의 연습에 따라 이러한 유형의 값이 필요합니다. 즉, 기존의 연습에 따라 -1 ( "알지 못한"표시)과 비교할 때,

이러한 유형의 산술 속성은 표준에 의해 정의되지만, 구현은 의도 된 응용 프로그램에 가장 적합한 범위, 정밀도 및 표현을 선택할 수있는 최대 유연성을 허용합니다. 표현은 몇 가지 기본 단위의 카운트 일 필요는 없습니다. 구현은 정수 유형의 서브 필드로서 시간 값의 다른 구성 요소를 인상적으로 표현할 수 있습니다.

다른 팁

어떤 시대가 시작된 이후 초를 나타내는 정수형으로 보편적으로 생각되고 구현되었음에도 불구하고, time_t 실제로는 공식적으로 정의되어 있지 않으므로 difftime의 결과를 이식적으로 사용할 수 없습니다. time_t.다른 대안은 다음과 같습니다. int 어떤 상황에서는 너무 작습니다(예: long) 그리고 long long 휴대용이 아닙니다.

는 아마도 그것이 가장 일반적인 산술 유형이기 때문일 것입니다.기본 time_t가 지원하는 경우 두 번째 정밀도보다 나은 정밀도가 좋습니다.

이유는 Type time_t 유형에 대해 정의 된 산술 작업이 없으므로 Double을 반환하여 계산 결과를 사용할 수 있음을 알 수 있습니다.

iOW는 TIME_T가 부호없는 INT 또는 일반 int로 정의 된 경우 다른 동작이 정의되면 다른 동작이 발생할 수 있으므로 다른 동작이 발생할 수 있으므로 안전하지 않은 영역에 두 개의 time_t 값을 추가하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top