c - करण - रैखिक डेटा संरचना




क्या आदिम डेटा प्रकार time_t है? (3)

आप फंक्शन difftime उपयोग कर सकते हैं। यह दो दिए गए time_t मानों के बीच का अंतर लौटाता है, आउटपुट वैल्यू double (देखें डिफॉल्टटाइम डॉक्यूमेंटेशन )।

time_t actual_time;
double actual_time_sec;
actual_time = time(0);
actual_time_sec = difftime(actual_time,0); 
printf("%g",actual_time_sec);

इस प्रश्न का पहले से ही यहाँ एक उत्तर है:

मुझे time_t का डेटा प्रकार नहीं पता है। यह फ्लोट डबल है या कुछ और? क्योंकि अगर मैं इसे प्रदर्शित करना चाहता हूं तो मुझे उस टैग की आवश्यकता है जो printf लिए इसके साथ मेल खाता है। मैं time_t प्रदर्शित करने के लिए वहां से बाकी को संभाल सकता हूं लेकिन मुझे उस डेटा प्रकार को जानना होगा जो इसके साथ मेल खाता है।


आप हमेशा ज्ञात समय (मध्यरात्रि, पिछली रात) बनाने के लिए mktime जैसी किसी चीज़ का उपयोग कर सकते हैं और दोनों के बीच एक डबल-सटीक समय अंतर प्राप्त करने के लिए difftime का उपयोग कर सकते हैं। एक प्लेटफ़ॉर्म-इंडिपेंडेंट समाधान के लिए, जब तक आप अपने पुस्तकालयों के विवरण में खुदाई नहीं करते हैं, आप इससे बहुत बेहतर नहीं करेंगे। सी कल्पना के अनुसार, time_t की परिभाषा कार्यान्वयन-परिभाषित है (जिसका अर्थ है कि पुस्तकालय का प्रत्येक कार्यान्वयन इसे तब भी परिभाषित कर सकता है, जब तक कि पुस्तकालय उपयोग के साथ कार्य करता है, यह कल्पना के अनुसार व्यवहार करता है।)

कहा जा रहा है कि, मेरी linux मशीन पर time_t का आकार 8 बाइट्स है, जो लंबे इंट या डबल का सुझाव देता है। तो मैंने किया:

int main()
{
    for(;;)
    {
        printf ("%ld\n", time(NULL));
        printf ("%f\n", time(NULL));
        sleep(1);
    }
    return 0;
}

% Ld द्वारा दिए गए समय में प्रत्येक चरण में वृद्धि हुई और फ्लोट ने प्रत्येक बार 0.000 मुद्रित किया। यदि आप time_ts प्रदर्शित करने के लिए प्रिंटफ़ का उपयोग करने पर नरक-तुला हैं, तो आपका सबसे अच्छा शर्त यह है कि आप अपने स्वयं के इस तरह के प्रयोग को देखें और देखें कि यह आपके प्लेटफॉर्म पर और आपके कंपाइलर के साथ कैसे काम करता है।


यह प्लेटफ़ॉर्म-विशिष्ट है। लेकिन आप इसे एक ज्ञात प्रकार में डाल सकते हैं।

printf("%lld\n", (long long) time(NULL));




time-t