भाषा निर्दिष्ट करता है कि time_t
अंकगणितीय प्रकार बार प्रतिनिधित्व करने में सक्षम है। इसे किसी विशेष तरीके से समय का प्रतिनिधित्व करने की आवश्यकता नहीं है। time_t
कुछ पल के बाद से सेकंड की संख्या के रूप में समय का प्रतिनिधित्व करता
हैं, तो -
ऑपरेटर सही ढंग से दो time_t
मूल्यों के बीच सेकंड में अंतर का परिकलन करेंगे।
यह नहीं (जैसे कि, अगर विवरण के स्तर को एक मिलीसेकंड है, या यदि एक time_t
के टुकड़े वर्ष, माह, दिन आदि का प्रतिनिधित्व करने वाले समूहों में विभाजित हैं), तो -
ऑपरेटर व्यर्थ परिणाम प्राप्त हो सकते है, तो।
दूसरी ओर, difftime()
फ़ंक्शन, "जानता है" कैसे एक time_t
एक समय का प्रतिनिधित्व करता है, और सेकंड में अंतर की गणना करने के लिए उस जानकारी का उपयोग करता है।
अधिकांश प्रयोगों, सरल घटाव और difftime()
पर एक ही बात करने के लिए हो - लेकिन केवल difftime()
सभी कार्यान्वयन पर सही ढंग से काम करने के लिए गारंटी है।
एक और अंतर यह: difftime()
फ्लोटिंग प्वाइंट प्रकार double
का एक परिणाम देता है, जबकि "-"
time_t
पर मान प्रकार time_t
का एक परिणाम अर्जित करता है। ज्यादातर मामलों में परिणाम पूरी तरह से आपके द्वारा निर्दिष्ट किए जाने वाले प्रकार के रूप में परिवर्तित हो जाएगा, लेकिन यदि time_t
एक हस्ताक्षरित पूर्णांक प्रकार होता है, तो बाद के समय से बाद के समय का घटाव नकारात्मक मूल्य के बजाय बहुत बड़ा मूल्य उत्पन्न करेगा । मैंने देखा है कि प्रत्येक प्रणाली time_t
को 32-बिट या 64-बिट हस्ताक्षरित पूर्णांक प्रकार के रूप में लागू करती है, लेकिन एक हस्ताक्षरित प्रकार का उपयोग करने की अनुमति है - एक और कारण है कि time_t
मानों का सरल घटाव आवश्यक नहीं है।
स्रोत
2012-12-13 08:39:14
इसे 'सी ++' के रूप में क्यों टैग किया गया है? –
@PaulR: 'difftime()' दोनों सी और सी ++ में मौजूद है। –
ठीक है आप शायद इसे पास्कल या फोरट्रान भी बना सकते हैं, लेकिन यह इसे पास्कल या फोरट्रान प्रश्न नहीं बनाता है। ;) –