आमतौर पर सी में, हमें कंप्यूटर को चर घोषणा में डेटा का प्रकार बताना होगा। निम्नलिखित कार्यक्रम में, मैं दो फ्लोटिंग पॉइंट संख्या 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
सटीक करने के लिए उस गणना के परिणाम को गोल करता है। । क्योंकि गोलाई अलग-अलग जगहों पर होती है, इसलिए परिणाम कम हो सकता है। अन्यथा समान प्रोग्राम के व्यवहार को प्रभावित करने वाले चर के प्रकारों के लिए यह सिर्फ एक उदाहरण है।