आमतौर पर सी में, हमें कंप्यूटर को चर घोषणा में डेटा का प्रकार बताना होगा। निम्नलिखित कार्यक्रम में, मैं दो फ्लोटिंग पॉइंट संख्या X और Y का योग प्रिंट करना चाहता हूं।
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
मुझे संकलक को चर X का प्रकार बताना था।
- संकलक
Xस्वयं के प्रकार का निर्धारण नहीं कर सकता है ?
हाँ, अगर मैं ऐसा कर सकता हूँ:
#define X 5.2
मैं अब अपने प्रोग्राम को कंपाइलर के प्रकार को बताए बिना लिख सकता हूं X:
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
इसलिए हम देखते हैं कि C भाषा में कुछ प्रकार की विशेषता है, जिसके उपयोग से यह अपने आप डेटा के प्रकार को निर्धारित कर सकता है। मेरे मामले में यह निर्धारित किया गया कि Xप्रकार फ्लोट का है।
- जब हम मुख्य () में कुछ घोषित करते हैं तो हमें डेटा के प्रकार का उल्लेख क्यों करना पड़ता है? कंपाइलर डेटा चर का प्रकार अपने आप निर्धारित नहीं कर सकता
main()क्योंकि यह अंदर होता है#define।
#define X 5.2, Xएक चर नहीं है, लेकिन एक स्थिर है, तो इसका शाब्दिक 5.2रूप से आपके द्वारा उल्लिखित कहीं भी पूर्वप्रक्रमक के रूप में प्रतिस्थापित किया जाता है X। आप पुन: असाइन नहीं कर सकते हैं X।
autoवास्तव में वही होता है जो आप चाहते हैं)। दूसरी ओर, यदि आपको लगता है कि आपको पता है कि आपका कोड क्या कर रहा है, और आपने वास्तव में कुछ और टाइप किया है, तो इस तरह का स्टैटिक टाइपिंग पहले एक त्रुटि पकड़ लेगा, इससे पहले कि यह एक बड़ी समस्या बन जाए। प्रत्येक भाषा एक संतुलन बनाती है: स्थैतिक टाइपिंग, टाइप इनफ़ॉर्मेंस, डायनेमिक टाइपिंग। कुछ कार्यों के लिए, अतिरिक्त टाइपिंग वास्तव में इसके लायक है। दूसरों के लिए, यह एक बेकार है।
5.2एक हैdouble, इसलिए पहला कार्यक्रमfloatसटीक करने के लिए डबल शाब्दिक गोल करता है , फिर उन्हें फ़्लोट्स के रूप में जोड़ता है, जबकि दूसरा राउंड 5.1 का दोहरा प्रतिनिधित्व करता हैdoubleऔर इसे जोड़करdoubleमान 5.2 मेंdoubleजोड़ देता है, फिरfloatसटीक करने के लिए उस गणना के परिणाम को गोल करता है। । क्योंकि गोलाई अलग-अलग जगहों पर होती है, इसलिए परिणाम कम हो सकता है। अन्यथा समान प्रोग्राम के व्यवहार को प्रभावित करने वाले चर के प्रकारों के लिए यह सिर्फ एक उदाहरण है।