चल. डेटा प्रकारांचे वजन किती आहे? शॉर्ट व्हेरिएबल

कोणत्याही भाषेत प्रोग्राम लिहिताना, आपल्याला भिन्न माहिती संग्रहित करण्यासाठी भिन्न व्हेरिएबल्स वापरणे आवश्यक आहे. व्हेरिएबल्स ही मूल्ये साठवण्यासाठी राखीव मेमरी स्थानांशिवाय दुसरे काहीही नसतात. याचा अर्थ असा की जेव्हा तुम्ही व्हेरिएबल तयार करता तेव्हा तुम्ही मेमरीमध्ये काही जागा वाचवता.

तुम्ही कॅरेक्टर, वाइड कॅरेक्टर, इंटिजर, फ्लोटिंग पॉइंट, डबल फ्लोटिंग पॉइंट, बुलियन इत्यादी विविध डेटा प्रकारांची माहिती साठवू शकता. व्हेरिएबलच्या डेटा प्रकारावर आधारित, ऑपरेटिंग सिस्टम मेमरी वाटप करते आणि त्यात काय संग्रहित केले जाऊ शकते ते ठरवते. राखीव मेमरी

आदिम अंगभूत प्रकार

C++ प्रोग्रामरला अंगभूत तसेच वापरकर्ता-परिभाषित डेटा प्रकारांचा समृद्ध संच ऑफर करतो. खालील सारण्यांमध्ये सात मुख्य C++ डेटा प्रकार आहेत:

प्रकार कीवर्ड
बुलियन bool
वर्ण चार
पूर्णांक int
फ्लोटिंग पॉइंट फ्लोट
दुहेरी फ्लोटिंग पॉइंट दुप्पट
मूल्यहीन शून्य
रुंद वर्ण wchar_t

या प्रकारच्या एक किंवा अधिक सुधारकांचा वापर करून काही मूलभूत प्रकार सुधारित केले जाऊ शकतात:

  • स्वाक्षरी केली
  • स्वाक्षरी न केलेले
  • लहान

खालील तक्त्यामध्ये व्हेरिएबलचा प्रकार, मेमरीमध्ये मूल्य साठवण्यासाठी आवश्यक असलेली मेमरीची रक्कम आणि अशा व्हेरिएबल्समध्ये साठवले जाऊ शकणारे कमाल आणि किमान मूल्य किती आहे हे दाखवले आहे.

प्रकार ठराविक बिट रुंदी ठराविक श्रेणी
चार 1 बाइट -127 ते 127 किंवा 0 ते 255
स्वाक्षरी न केलेले चार 1 बाइट 0 ते 255 पर्यंत
स्वाक्षरी केलेले चार 1 बाइट -127 ते 127
int 4 बाइट्स -2147483648 ते 2147483647
स्वाक्षरी न केलेले इंट 4 बाइट्स 0 ते 4294967295
स्वाक्षरी int 4 बाइट्स -2147483648 ते 2147483647
लहान इंट 2 बाइट्स -३२७६८ ते ३२७६७
स्वाक्षरी न केलेले लहान इंट श्रेणी 0 ते 65,535
स्वाक्षरी लहान int श्रेणी -३२७६८ ते ३२७६७
लांब इंट 4 बाइट्स -2,147,483,648 ते 2,147,483,647
लांब int वर स्वाक्षरी केली 4 बाइट्स लांब इंट प्रमाणेच
स्वाक्षरी न केलेले लांब इंट 4 बाइट्स ० ते ४,२९४,९६७,२९५
फ्लोट 4 बाइट्स +/- 3.4e +/- 38 (~7 अंक)
दुप्पट 8 बाइट्स
लांब दुहेरी 8 बाइट्स +/- 1.7e +/- 308 (~15 अंक)
wchar_t 2 किंवा 4 बाइट्स 1 रुंद वर्ण

व्हेरिएबल्सचा आकार वरील सारणीमध्ये दर्शविलेल्या आकारापेक्षा भिन्न असू शकतो, तुम्ही वापरत असलेल्या कंपाइलर आणि संगणकावर अवलंबून. खाली एक उदाहरण आहे जे तुमच्या संगणकावरील विविध डेटा प्रकारांचे योग्य आकार देईल.

#समाविष्ट करा नेमस्पेस std वापरून; int main() ( cout<< "Size of char: " << sizeof(char) << endl; cout << "Size of int: " << sizeof(int) << endl; cout << "Size of short int: " << sizeof(short int) << endl; cout << "Size of long int: " << sizeof(long int) << endl; cout << "Size of float: " << sizeof(float) << endl; cout << "Size of double: " << sizeof(double) << endl; cout << "Size of wchar_t: " << sizeof(wchar_t) << endl; return 0; }

हे उदाहरण वापरते endlजे प्रत्येक ओळीनंतर नवीन ओळ वर्ण आणि ऑपरेटरची ओळख करून देते<< используется для передачи нескольких значений на экран. Мы также используем оператор आकार()विविध डेटा प्रकारांचा आकार मिळविण्यासाठी.

जेव्हा वरील कोड संकलित केला जातो आणि अंमलात आणला जातो, तेव्हा ते खालील आउटपुट तयार करते, जे मशीननुसार भिन्न असू शकते:

चारचा आकार: 1 इंटचा आकार: 4 लहान इंटचा आकार: 2 लांब इंटचा आकार: 4 फ्लोटचा आकार: 4 दुप्पट आकार: 8 wchar_t चा आकार: 4

Typedef घोषणा

तुम्ही typedef वापरून विद्यमान प्रकारासाठी नवीन नाव तयार करू शकता. टाईपडेफ वापरून नवीन प्रकार परिभाषित करण्यासाठी खाली सोपे वाक्यरचना आहे:

Typedef प्रकार नवीन नाव;

उदाहरणार्थ, खालील कंपाइलरला सांगते की पाय हे int चे दुसरे नाव आहे:

Typedef int फूट;

आता खालील घोषणा पूर्णपणे कायदेशीर आहे आणि अंतर नावाचे पूर्णांक व्हेरिएबल तयार करते:

फूट अंतर

सूचीबद्ध प्रकार

गणना केलेला प्रकार पर्यायी प्रकाराचे नाव आणि शून्य किंवा अधिक अभिज्ञापकांचा संच घोषित करतो जो प्रकाराची मूल्ये म्हणून वापरला जाऊ शकतो. प्रत्येक प्रगणक हा एक स्थिरांक असतो ज्याचा प्रकार गणन असतो. गणन तयार करण्यासाठी कीवर्ड वापरणे आवश्यक आहे enum. गणन प्रकाराचे सामान्य दृश्य:

enum enum-name ( नावांची यादी ) var-list;

येथे enum-name हे enum प्रकाराचे नाव आहे. नावांची यादी स्वल्पविरामाने विभक्त केली आहे. उदाहरणार्थ, खालील कोड रंगांच्या गणनेला रंग म्हणतात आणि रंगाचा प्रकार c व्हेरिएबल परिभाषित करतो. शेवटी, c ला "निळा" मूल्य नियुक्त केले आहे.

एनम रंग (लाल, हिरवा, निळा) c; c = निळा;

डीफॉल्टनुसार, पहिल्या नावाचे मूल्य 0 असते, दुसऱ्या नावाचे मूल्य 1 असते आणि तिसऱ्याचे मूल्य 2 असते, इ. परंतु तुम्ही इनिशिएलायझर जोडून नावाला विशिष्ट मूल्य बनवू शकता. उदाहरणार्थ, खालील गणनेमध्ये, हिरव्या रंगाचे मूल्य 5 असेल.

एनम रंग (लाल, हिरवा = 5, निळा);

येथे निळ्याचे मूल्य 6 असेल कारण प्रत्येक नाव मागील नावापेक्षा मोठे असेल.

या पाठात आपण पूर्णांक डेटा प्रकार, त्यांची मूल्य श्रेणी, भागाकार आणि ओव्हरफ्लो: ते काय आहेत आणि उदाहरणे पाहू.

पूर्णांक डेटा प्रकार

पूर्णांक डेटा प्रकारहा एक प्रकार आहे ज्याच्या व्हेरिएबल्समध्ये फक्त पूर्णांक असू शकतात (अपूर्णांक नसलेले, उदाहरणार्थ: -2, -1, 0, 1, 2). C++ मध्ये वापरासाठी पाच मूलभूत पूर्णांक प्रकार उपलब्ध आहेत:

नोंद: चार प्रकार हा एक विशेष केस आहे, तो पूर्णांक आणि वर्ण डेटा प्रकार दोन्ही आहे. आपण पुढीलपैकी एका धड्यात याबद्दल अधिक तपशीलवार बोलू.

वरील पूर्णांक प्रकारांमधील मुख्य फरक हा आहे की ते जितके मोठे असेल तितकी अधिक मूल्ये त्या प्रकारातील व्हेरिएबल संचयित करू शकतात.

पूर्णांक व्हेरिएबल्स परिभाषित करणे

हे खालीलप्रमाणे घडते:

char c; लहान int si; // वैध शॉर्ट एस; // preferred int i; long int li; // वैध लांब l; // शक्यतो लांब लांब int lli; // वैध लांब लांब ll; // श्रेयस्कर

लहान इंट , लाँग इंट , आणि लाँग लॉन्ग इंट ही पूर्ण नावे वापरली जाऊ शकतात, त्यांच्या लहान आवृत्त्या (इंट शिवाय) वापरण्यासाठी प्राधान्य दिले जाते. याव्यतिरिक्त, सतत इंट जोडल्याने कोड वाचणे कठीण होते (वेरिएबलसह सहज गोंधळलेले).

मूल्य श्रेणी आणि पूर्णांक डेटा प्रकारांचे चिन्ह

तुम्हाला आधीच्या धड्यावरून माहित आहे की, n बिट्स असलेले व्हेरिएबल 2n संभाव्य मूल्ये साठवू शकते. पण हे अर्थ काय आहेत? जे श्रेणीत आहेत. श्रेणी- ही मूल्ये आहेत आणि त्यापासून एक विशिष्ट डेटा प्रकार संचयित करू शकतो. पूर्णांक व्हेरिएबलची श्रेणी दोन घटकांद्वारे निर्धारित केली जाते: त्याचा आकार (बिट्समध्ये) आणि चिन्ह(जे असू शकते स्वाक्षरी केलीकिंवा स्वाक्षरी न केलेले).

पूर्णांक प्रकार स्वाक्षरी (चिन्हासह) म्हणजे व्हेरिएबलमध्ये सकारात्मक आणि ऋण अशा दोन्ही संख्या असू शकतात. व्हेरिएबल साइन केलेले म्हणून घोषित करण्यासाठी, स्वाक्षरी केलेला कीवर्ड वापरा:

स्वाक्षरी केलेले चार c; स्वाक्षरी लहान s; स्वाक्षरी int i; स्वाक्षरी लांब l; स्वाक्षरी केलेले लांब लांब ll;

स्वाक्षरी केलेले चार c;

स्वाक्षरी लहान s;

स्वाक्षरी int i;

स्वाक्षरी लांब l;

स्वाक्षरी केलेले लांब लांब ll;

डीफॉल्टनुसार, स्वाक्षरी केलेला कीवर्ड डेटा प्रकारापूर्वी लिहिला जातो.

1-बाइट स्वाक्षरी केलेल्या पूर्णांक व्हेरिएबलमध्ये -128 ते 127 पर्यंत मूल्यांची श्रेणी असते. -128 ते 127 (समावेशक) मधील कोणतेही मूल्य त्यामध्ये सुरक्षितपणे संग्रहित केले जाऊ शकते.

काही प्रकरणांमध्ये, प्रोग्राममध्ये नकारात्मक संख्या वापरल्या जाणार नाहीत हे आम्ही आधीच जाणून घेऊ शकतो. एखाद्या गोष्टीचे प्रमाण किंवा आकार साठवण्यासाठी व्हेरिएबल्स वापरताना हे अगदी सामान्य आहे (उदाहरणार्थ, तुमची उंची किंवा वजन नकारात्मक असू शकत नाही).

पूर्णांक प्रकार स्वाक्षरी न केलेले (स्वाक्षरी न केलेले) मध्ये फक्त सकारात्मक संख्या असू शकतात. व्हेरिएबल म्हणून घोषित करणे स्वाक्षरी न केलेले, स्वाक्षरी न केलेला कीवर्ड वापरा:

स्वाक्षरी न केलेले चार c; स्वाक्षरी न केलेले लहान s; स्वाक्षरी न केलेले इंट i; स्वाक्षरी न केलेले लांब l; स्वाक्षरी न केलेले लांब लांब ll;

स्वाक्षरी न केलेले चार c;

स्वाक्षरी न केलेले शॉर्ट एस ;

स्वाक्षरी न केलेले इंट i;

स्वाक्षरी न केलेले लांब l ;

स्वाक्षरी न केलेले लांब लांब ll ;

1-बाइट अस्वाक्षरित पूर्णांक व्हेरिएबलची मूल्य श्रेणी 0 ते 255 पर्यंत असते.

कृपया लक्षात घ्या की व्हेरिएबल अस्वाक्षरित म्हणून घोषित करणे म्हणजे त्यात ऋण संख्या असू शकत नाही (केवळ सकारात्मक).

आता तुम्हाला स्वाक्षरी केलेले आणि स्वाक्षरी न केलेले फरक समजले आहे, चला भिन्न डेटा प्रकारांच्या मूल्य श्रेणी पाहू:

आकाराचे प्रकार मूल्यांची श्रेणी
1 बाइट स्वाक्षरी केली -128 ते 127
1 बाइट स्वाक्षरी केलेले नाही 0 ते 255 पर्यंत
2 बाइट्स स्वाक्षरी केली -32,768 ते 32,767 पर्यंत
2 बाइट्स स्वाक्षरी न केलेले 0 ते 65 535 पर्यंत
4 बाइट्स स्वाक्षरी केली -2 147 483 648 ते 2 147 483 647 पर्यंत
4 बाइट्स स्वाक्षरी न केलेले 0 ते 4 294 967 295 पर्यंत
8 बाइट्सवर स्वाक्षरी केली -9 223 372 036 854 775 808 पासून 9 223 372 036 854 775 807 पर्यंत
8 बाइट्स स्वाक्षरी न केलेले 0 ते 18 446 744 073 709 551 615 पर्यंत

गणितज्ञांसाठी: बिट्सच्या nव्या क्रमांकासह साइन केलेल्या व्हेरिएबलची श्रेणी -(2 n-1) ते 2 n-1 -1 पर्यंत असते. बिट्सच्या nव्या क्रमांकासह स्वाक्षरी न केलेल्या व्हेरिएबलची श्रेणी 0 ते (2n)-1 पर्यंत असते. गैर-गणितज्ञांसाठी: टेबल वापरा :)

नवशिक्या प्रोग्रामर कधीकधी स्वाक्षरी केलेल्या आणि स्वाक्षरी न केलेल्या चलांमध्ये गोंधळात पडतात. परंतु त्यांच्यातील फरक लक्षात ठेवण्याचा एक सोपा मार्ग आहे. ऋण संख्या आणि सकारात्मक संख्या यात काय फरक आहे? बरोबर! समोर उणे. जर वजा नसेल, तर संख्या सकारात्मक आहे. म्हणून, एक चिन्हांकित पूर्णांक प्रकार म्हणजे वजा चिन्ह उपस्थित असू शकते, म्हणजे. संख्या सकारात्मक किंवा नकारात्मक असू शकतात. स्वाक्षरी न केलेला पूर्णांक प्रकार म्हणजे समोरचे वजा चिन्ह पूर्णपणे अनुपस्थित आहे, म्हणजे. संख्या फक्त सकारात्मक असू शकते.

डीफॉल्ट काय आहे: स्वाक्षरी केलेले किंवा स्वाक्षरी केलेले नाही?

जर आपण स्वाक्षरी न करता किंवा स्वाक्षरी न करता व्हेरिएबल घोषित केले तर काय होईल?

चार वगळता सर्व पूर्णांक डेटा प्रकार डीफॉल्टनुसार स्वाक्षरी केलेले असतात. चार प्रकार एकतर स्वाक्षरी किंवा स्वाक्षरी नसलेला असू शकतो (परंतु सहसा स्वाक्षरी केलेला असतो).

बऱ्याच प्रकरणांमध्ये, वर्ण प्रकाराचा अपवाद वगळता, स्वाक्षरी केलेला कीवर्ड लिहिलेला नाही (तो आधीपासूनच डीफॉल्टनुसार वापरला जातो) (येथे स्पष्ट करणे चांगले).

प्रोग्रामर, नियमानुसार, स्वाक्षरी न केलेले पूर्णांक प्रकार वापरणे टाळतात जोपर्यंत त्याची विशिष्ट गरज नसते, कारण आकडेवारीनुसार, स्वाक्षरी केलेल्या व्हेरिएबल्सच्या तुलनेत अस्वाक्षरित व्हेरिएबल्समध्ये अधिक त्रुटी आढळतात.

नियम: स्वाक्षरी केलेले पूर्णांक प्रकार वापरा ऐवजी स्वाक्षरी न केलेले.

ओव्हरफ्लो

प्रश्न: "आम्ही विशिष्ट डेटा प्रकाराच्या मूल्यांच्या श्रेणीबाहेरील मूल्य वापरण्याचा प्रयत्न केल्यास काय होईल?" उत्तरः "ओव्हरफ्लो".

ओव्हरफ्लो(इंग्रजी) "ओव्हरफ्लो") जेव्हा बिट्स गमावले जातात तेव्हा उद्भवते कारण व्हेरिएबलला ते संचयित करण्यासाठी पुरेशी मेमरी वाटप केलेली नव्हती.

ओव्हरफ्लो उदाहरणे

स्वाक्षरी न केलेल्या व्हेरिएबलचा विचार करा, ज्यामध्ये 4 बिट्स आहेत. वरील सारणीमध्ये सूचीबद्ध केलेली कोणतीही बायनरी संख्या या व्हेरिएबलमध्ये बसेल.

"परंतु आम्ही 4 बिट्सपेक्षा जास्त वेळ घेणारे मूल्य नियुक्त करण्याचा प्रयत्न केल्यास काय होईल?" बरोबर! ओव्हरफ्लो. आमचे व्हेरिएबल फक्त 4 सर्वात महत्वाचे (उजवीकडे असलेले) बिट संचयित करेल, बाकीचे सर्व गमावले जातील.

उदाहरणार्थ, जर आपण आपल्या 4-बिट व्हेरिएबलमध्ये 21 क्रमांक ठेवण्याचा प्रयत्न केला तर:

दशांश प्रणाली बायनरी प्रणाली
21 10101

21 संख्या 5 बिट (10101) घेते. उजवीकडील 4 बिट (0101) व्हेरिएबलमध्ये बसतील आणि सर्वात डावीकडील बिट (1) गमावले जातील. त्या. आमच्या व्हेरिएबलमध्ये 0101 असेल, जे 101 च्या बरोबरीचे आहे (समोरचे शून्य मोजले जात नाही), आणि ही संख्या 5 आहे, 21 नाही.

नोंद: बायनरी ते दशांश आणि उलट संख्यांमध्ये रूपांतरित करण्याचा एक वेगळा धडा असेल, जिथे आपण सर्व गोष्टींचा तपशीलवार विचार करू आणि चर्चा करू.

आता कोडमधील उदाहरण पाहू (लहान प्रकार 16 बिट घेते):

#समाविष्ट करा int main() ( अस्वाक्षरित शॉर्ट x = 65535; // सर्वात मोठे मूल्य जे 16-बिट अस्वाक्षरित std::cout व्हेरिएबल संचयित करू शकते<< "x was: " << x << std::endl; x = x + 1; // 65536 - это число больше максимально допустимого числа из диапазона допустимых значений. Следовательно, произойдёт переполнение, так как переменнная x не может хранить 17 бит std::cout << "x is now: " << x << std::endl; return 0; }

#समाविष्ट करा

इंट मुख्य()

स्वाक्षरी न केलेले लहान x = 65535 ; // 16-बिट साइन न केलेले व्हेरिएबल संचयित करू शकणारे सर्वात मोठे मूल्य

std::cout<< "x was: " << x << std :: endl ;

x = x + 1 ; // 65536 ही वैध मूल्यांच्या श्रेणीतील कमाल अनुमत संख्येपेक्षा मोठी संख्या आहे. म्हणून, व्हेरिएबल x 17 बिट संचयित करू शकत नसल्यामुळे ओव्हरफ्लो होईल

std::cout<< "x is now: " << x << std :: endl ;

परतावा 0;

x होता: 65535
x आता आहे: 0

काय झाले? ओव्हरफ्लो झाला कारण आम्ही काहीतरी क्रॅम करण्याचा प्रयत्न केला जे x व्हेरिएबलमध्ये ढकलले जाऊ शकत नाही.

ज्यांना अधिक जाणून घ्यायचे आहे त्यांच्यासाठी:बायनरी मधील 65535 ही संख्या 1111 1111 1111 1111 म्हणून दर्शविली जाते. 65535 ही सर्वात मोठी संख्या आहे जी 2-बाइट (16-बिट) साइन न केलेले पूर्णांक व्हेरिएबल संचयित करू शकते कारण ती सर्व 16 बिट्स वापरते. जेव्हा आपण 1 जोडतो, तेव्हा आपल्याला 65536 क्रमांक मिळेल. 65536 हा क्रमांक बायनरीमध्ये 1 0000 0000 0000 0000 म्हणून दर्शविला जातो आणि 17 बिट घेतो! म्हणून, सर्वात महत्वाचा बिट (जो 1 आहे) गमावला आहे आणि उजवीकडील सर्व 16 बिट राखून ठेवले आहेत. 0000 0000 0000 0000 हे संयोजन दशांश 0 शी संबंधित आहे, जो आमचा निकाल आहे.

त्याचप्रमाणे, वैध मूल्यांच्या किमान श्रेणीपेक्षा कमी संख्या वापरून आम्हाला ओव्हरफ्लो मिळेल:

#समाविष्ट करा int main() ( अस्वाक्षरित लहान x = 0; // सर्वात लहान मूल्य जे 2-बाइट अ-स्वाक्षरित व्हेरिएबल std::cout संचयित करू शकते<< "x was: " << x << std::endl; x = x - 1; // переполнение! std::cout << "x is now: " << x << std::endl; return 0; }

#समाविष्ट करा

इंट मुख्य()

स्वाक्षरी न केलेले लहान x = 0 ; // सर्वात लहान मूल्य जे 2-बाइट अ-साइन केलेले व्हेरिएबल संचयित करू शकते

std::cout<< "x was: " << x << std :: endl ;

x = x - 1 ; // ओव्हरफ्लो!

std::cout<< "x is now: " << x << std :: endl ;

परतावा 0;

वरील प्रोग्राम चालवण्याचे परिणाम:

x होता: 0
x आता आहे: 65535

ओव्हरफ्लोमुळे माहितीचे नुकसान होते, जी कधीही चांगली गोष्ट नाही. व्हेरिएबलचे मूल्य वापरल्या जाणाऱ्या डेटा प्रकाराच्या अनुज्ञेय मूल्यांच्या मर्यादेबाहेरची संख्या असू शकते अशी अगदी थोडीशी शंका किंवा सूचना असल्यास, मोठा डेटा प्रकार वापरा!

हे चीट शीट C++ प्रोग्रामिंग भाषेच्या मुख्य डेटा प्रकारांबद्दल आणि त्यांच्या अंमलबजावणीच्या वैशिष्ट्यांबद्दल माहिती प्रदान करते. तसेच, रेकॉर्डच्या शेवटी या प्रकारच्या मूल्यांच्या श्रेणीसह एक सारणी आहे.

डेटा प्रकार संकल्पना

कोणत्याही प्रोग्रामचा मुख्य उद्देश डेटावर प्रक्रिया करणे हा असतो. वेगवेगळ्या प्रकारचा डेटा वेगवेगळ्या प्रकारे संग्रहित केला जातो आणि त्यावर प्रक्रिया केली जाते. कोणत्याही अल्गोरिदमिक भाषेत, प्रत्येक स्थिर, चल, अभिव्यक्ती किंवा कार्याचा विशिष्ट प्रकार असणे आवश्यक आहे.

डेटा प्रकार परिभाषित करतो:

  • संगणक मेमरीमधील डेटाचे अंतर्गत प्रतिनिधित्व;
  • या प्रकारच्या परिमाण घेऊ शकतील अशा मूल्यांचा संच;
  • ऑपरेशन्स आणि फंक्शन्स जे या प्रकारच्या प्रमाणात लागू केले जाऊ शकतात.

या वैशिष्ट्यांवर आधारित, प्रोग्रामर वास्तविक वस्तूंचे प्रतिनिधित्व करण्यासाठी प्रोग्राममध्ये वापरल्या जाणाऱ्या प्रत्येक प्रमाणाचा प्रकार निवडतो. आवश्यक प्रकारची घोषणा कंपायलरला विविध प्रोग्राम रचनांची वैधता तपासण्याची परवानगी देते. मूल्याचा प्रकार मशीन सूचना निर्धारित करतो ज्या डेटावर प्रक्रिया करण्यासाठी वापरल्या जातील.

C++ भाषेचे सर्व प्रकार यात विभागले जाऊ शकतात मूलभूत आणि संमिश्र . C++ भाषा सहा परिभाषित करते मुख्यपूर्णांक, वास्तविक, वर्ण आणि तार्किक मूल्ये दर्शवण्यासाठी डेटा प्रकार. या प्रकारांवर आधारित, प्रोग्रामर वर्णन प्रविष्ट करू शकतो संमिश्रप्रकार यामध्ये ॲरे, गणने, फंक्शन्स, स्ट्रक्चर्स, रेफरन्स, पॉइंटर्स, युनियन्स आणि क्लासेसचा समावेश होतो.

C++ मधील मूलभूत डेटा प्रकार

मूलभूत (मानक) डेटा प्रकारांना अनेकदा अंकगणित म्हणतात कारण ते अंकगणित ऑपरेशन्समध्ये वापरले जाऊ शकतात. मुख्य प्रकारांचे वर्णन करण्यासाठी, खालील परिभाषित केले आहेत:

  1. int(int);
  2. char(char);
  3. wchar_t(widechar);
  4. bool(बूलियन);
  5. फ्लोट (वास्तविक);
  6. दुहेरी (दुहेरी अचूकता वास्तविक).

पहिल्या चार प्रकारांना पूर्णांक म्हणतात ( संपूर्ण ), शेवटचे दोन - फ्लोटिंग पॉइंट प्रकार . पूर्णांक मूल्ये हाताळण्यासाठी कंपाइलर तयार करतो तो कोड फ्लोटिंग-पॉइंट मूल्यांच्या कोडपेक्षा वेगळा असतो.

तिथे चार आहेत टाईप स्पेसिफायर , अंतर्गत प्रतिनिधित्व आणि मानक प्रकारांच्या मूल्यांची श्रेणी स्पष्ट करणे:

  • लहान (लहान);
  • लांब (लांब);
  • स्वाक्षरी केलेले (स्वाक्षरी केलेले);
  • स्वाक्षरी न केलेले

पूर्णांक प्रकार (int)

इंट प्रकाराचा आकार मानकानुसार परिभाषित केला जात नाही, परंतु संगणक आणि कंपाइलरवर अवलंबून असतो. 16-बिट प्रोसेसरसाठी, या प्रकारच्या मूल्यांसाठी 2 बाइट्स वाटप केले जातात, 32-बिट प्रोसेसरसाठी - 4 बाइट्स.

टाईप नावापूर्वीचा छोटा स्पेसिफायर कंपाइलरला सूचित करतो की प्रोसेसर क्षमतेची पर्वा न करता नंबरसाठी 2 बाइट्स वाटप करणे आवश्यक आहे. लाँग स्पेसिफायरचा अर्थ असा आहे की पूर्णांक मूल्य 4 बाइट्स व्यापेल. तर 16-बिट संगणकावर समतुल्य इंट आणि शॉर्ट इंट आहेत आणि 32-बिट संगणकावर समतुल्य इंट आणि लाँग इंट आहेत.

अंतर्गत प्रतिनिधित्व पूर्णांक प्रकाराची मूल्ये - बायनरी कोडमधील पूर्णांक. स्वाक्षरी केलेला विनिर्देशक वापरताना, संख्येचा सर्वात महत्त्वाचा भाग स्वाक्षरीनुसार अर्थ लावला जातो (0 ही सकारात्मक संख्या आहे, 1 ही ऋण संख्या आहे). स्वाक्षरी न केलेला विनिर्देशक फक्त सकारात्मक संख्या दर्शविण्याची परवानगी देतो, कारण सर्वात लक्षणीय बिट संख्या कोडचा भाग म्हणून मानला जातो. अशा प्रकारे, int प्रकाराच्या मूल्यांची श्रेणी निर्दिष्टकर्त्यांवर अवलंबून असते. IBM PC-सुसंगत संगणकांसाठी विविध स्पेसिफायर्ससह पूर्णांक प्रकाराच्या मूल्यांच्या श्रेणी एंट्रीच्या शेवटी "साध्या डेटा प्रकारांच्या मूल्य श्रेणी" सारणीमध्ये दिल्या आहेत.

डीफॉल्टनुसार, सर्व पूर्णांक प्रकार स्वाक्षरी केलेले मानले जातात, म्हणजे स्वाक्षरी केलेला निर्दिष्टकर्ता वगळला जाऊ शकतो.

प्रोग्राममध्ये आढळणारे स्थिरांक त्यांच्या प्रकारानुसार एक प्रकार किंवा दुसरा नियुक्त केला जातो. काही कारणास्तव प्रोग्रामर या प्रकारावर समाधानी नसल्यास, तो L, l (लांब) आणि U, u (साइन न केलेले) प्रत्यय वापरून आवश्यक प्रकार स्पष्टपणे सूचित करू शकतो. उदाहरणार्थ, स्थिर 32L लांबीचा असेल आणि 4 बाइट व्यापेल. तुम्ही L आणि U प्रत्यय एकाच वेळी वापरू शकता, उदाहरणार्थ, 0x22UL किंवा 05Lu.

नोंद

short int, long int, signed int आणि unsigned int चे प्रकार अनुक्रमे शॉर्ट, लाँग, स्वाक्षरी केलेले आणि स्वाक्षरी नसलेले असे संक्षेप केले जाऊ शकतात.

वर्ण प्रकार (char)

वर्ण प्रकाराचे मूल्य दिलेल्या संगणकासाठी वर्ण संचातील कोणतेही वर्ण सामावून घेण्यासाठी पुरेसे बाइट्सचे वाटप केले जाते, जे प्रकाराचे नाव निर्धारित करते. सामान्यतः हे 1 बाइट असते. चार प्रकार, इतर पूर्णांक प्रकारांप्रमाणे, स्वाक्षरी किंवा स्वाक्षरीहीन केले जाऊ शकतात. स्वाक्षरी केलेली मूल्ये श्रेणी -128 ते 127 मध्ये मूल्ये संचयित करू शकतात. स्वाक्षरी न केलेले निर्दिष्टकर्ता वापरून, मूल्ये 0 ते 255 पर्यंत असू शकतात. 256-वर्णांच्या ASCII वर्ण संचामध्ये कोणतेही वर्ण संचयित करण्यासाठी हे पुरेसे आहे. वर्ण प्रकाराची मूल्ये निर्दिष्ट श्रेणींच्या सीमा ओलांडत नसलेल्या पूर्णांक संग्रहित करण्यासाठी देखील वापरली जातात.

विस्तारित वर्ण प्रकार (wchar_t)

wchar_t प्रकार वर्णांच्या संचासह कार्य करण्यासाठी डिझाइन केलेले आहे ज्यासाठी 1 बाइट एनकोड करण्यासाठी पुरेसे नाही, उदाहरणार्थ, युनिकोड. या प्रकाराचा आकार अंमलबजावणीवर अवलंबून असतो; नियमानुसार, ते लहान प्रकाराशी संबंधित आहे. wchar_t प्रकारातील स्ट्रिंग स्थिरांक L उपसर्गाने लिहिलेले आहेत, उदाहरणार्थ, L»गेट्स».

बुलियन प्रकार (बूल)

बुलियन व्हॅल्यूज फक्त खरी आणि असत्य ही मूल्ये घेऊ शकतात, जी आरक्षित शब्द आहेत. असत्य मूल्य दर्शविण्याचे अंतर्गत स्वरूप 0 (शून्य) आहे. इतर कोणतेही मूल्य सत्य म्हणून समजले जाते. पूर्णांक प्रकारात रूपांतरित केल्यावर, true चे मूल्य 1 असते.

फ्लोटिंग पॉइंट प्रकार (फ्लोट, दुहेरी आणि लांब दुहेरी)

C++ मानक वास्तविक मूल्ये संचयित करण्यासाठी तीन डेटा प्रकार परिभाषित करते: फ्लोट, दुहेरी आणि लांब दुहेरी.

फ्लोटिंग-पॉइंट डेटा प्रकार पूर्णांक डेटा प्रकारांपेक्षा संगणक मेमरीमध्ये वेगळ्या प्रकारे संग्रहित केले जातात. वास्तविक संख्येच्या अंतर्गत प्रतिनिधित्वामध्ये दोन भाग असतात - मँटिसा आणि घातांक. IBM PC-सुसंगत संगणकांवर, फ्लोट मूल्ये 4 बाइट्स व्यापतात, ज्यापैकी एक बायनरी अंक मँटिसा चिन्हासाठी, घातांकासाठी 8 बिट्स आणि मँटिसा साठी 23 दिला जातो. मँटिसा ही 1.0 पेक्षा मोठी परंतु 2.0 पेक्षा कमी संख्या आहे. मंटिसाचा अग्रगण्य अंक नेहमी 1 असल्याने, तो संग्रहित केला जात नाही.

8 बाइट्स व्यापलेल्या दुहेरी मूल्यांसाठी, अनुक्रमे घातांक आणि मॅन्टिसासाठी 11 आणि 52 बिट वाटप केले जातात. मॅन्टिसाची लांबी संख्येची अचूकता निर्धारित करते आणि घातांकाची लांबी त्याची श्रेणी निर्धारित करते.तुम्ही एंट्रीच्या शेवटी टेबलवरून पाहू शकता, फ्लोट आणि लाँग इंट व्हॅल्यूजसाठी समान संख्येच्या बाइट्ससह, त्यांच्या परवानगीयोग्य मूल्यांच्या श्रेणी मोठ्या प्रमाणात भिन्न आहेत. अंतर्गत प्रतिनिधित्व फॉर्ममुळे.

दुहेरी प्रकाराच्या नावापुढील लांब निर्दिष्टकर्ता सूचित करतो की त्याच्या मूल्यासाठी 10 बाइट्स वाटप केले आहेत.

फ्लोटिंग-पॉइंट स्थिरांक डीफॉल्टनुसार दुहेरी प्रकारचे असतात. तुम्ही F, f (float) आणि L, l (लांब) प्रत्यय वापरून स्थिरतेचा प्रकार स्पष्टपणे निर्दिष्ट करू शकता. उदाहरणार्थ, स्थिर 2E+6L लाँग डबल प्रकारचा असेल आणि स्थिर 1.82f फ्लोट प्रकाराचा असेल.

प्लॅटफॉर्मवर पोर्टेबल असलेले प्रोग्राम लिहिण्यासाठी, तुम्ही int प्रकाराच्या आकाराबद्दल गृहीत धरू शकत नाही. ते प्राप्त करण्यासाठी, आपण आकाराचे ऑपरेशन वापरणे आवश्यक आहे, ज्याचा परिणाम बाइट्समधील प्रकाराचा आकार आहे. उदाहरणार्थ, MS-DOS ऑपरेटिंग सिस्टमसाठी (int) आकाराचा परिणाम 2 असेल, परंतु Windows 98 किंवा OS/2 साठी परिणाम 4 असेल.

ANSI मानक मूलभूत प्रकारांसाठी मूल्य श्रेणी निर्दिष्ट करत नाही; फक्त त्यांच्या आकारांमधील संबंध परिभाषित केले जातात, उदाहरणार्थ:

आकार (फ्लोट) ≤ slzeof(दुहेरी) ≤ आकार (लांब दुहेरी)
sizeof(char) ≤ slzeof(short) ≤ sizeof(int) ≤ sizeof(लांब)

नोंद

पूर्णांक प्रकारांसाठी किमान आणि कमाल अनुमत मूल्ये अंमलबजावणीवर अवलंबून आहेत आणि शीर्षलेख फाइलमध्ये दिली आहेत (), वास्तविक प्रकारांची वैशिष्ट्ये - फाइलमध्ये (), तसेच numeric_limits वर्ग टेम्पलेटमध्ये

प्रकार शून्य

सूचीबद्ध केलेल्या व्यतिरिक्त, भाषेच्या मुख्य प्रकारांमध्ये शून्य प्रकार समाविष्ट आहे, परंतु या प्रकारच्या मूल्यांचा संच रिक्त आहे. मूल्य परत न करणारी फंक्शन्स परिभाषित करण्यासाठी, फंक्शन आर्ग्युमेंट्सची रिक्त सूची निर्दिष्ट करण्यासाठी, पॉइंटर्ससाठी बेस प्रकार आणि प्रकार कास्टिंग ऑपरेशन्समध्ये याचा वापर केला जातो.

IBM PC-सुसंगत संगणकांसाठी C++ मधील साध्या डेटा प्रकारांच्या मूल्य श्रेणी

प्रश्न: IBM PC-compatible computer या शब्दाचा अर्थ काय आहे?
A: IBM PC सुसंगत संगणक हा एक संगणक आहे जो वास्तुशास्त्रीयदृष्ट्या IBM PC, XT आणि AT च्या जवळ आहे. IBM PC-सुसंगत संगणक इंटेल 8086 शी सुसंगत मायक्रोप्रोसेसरवर तयार केले जातात (आणि, तुम्हाला माहिती आहे की, नंतरचे सर्व इंटेल प्रोसेसर 8086 शी पूर्णपणे बॅकवर्ड सुसंगत आहेत). खरं तर, हे जवळजवळ सर्व आधुनिक संगणक आहेत.

विविध प्रकारचे पूर्णांक आणि वास्तविक प्रकार, डेटा प्रस्तुतीकरणाच्या श्रेणी आणि अचूकतेमध्ये भिन्नता, प्रोग्रामरला विशिष्ट उपकरणांच्या क्षमतांचा सर्वात प्रभावीपणे वापर करण्याची संधी देण्यासाठी सादर केले गेले, कारण गणनांचा वेग आणि मेमरीचे प्रमाण यावर अवलंबून असते. प्रकाराची निवड. परंतु एका प्रकारच्या संगणकासाठी ऑप्टिमाइझ केलेला प्रोग्राम इतर प्लॅटफॉर्मवर पोर्टेबल असू शकत नाही, त्यामुळे सर्वसाधारणपणे तुम्ही डेटा प्रकारांच्या विशिष्ट वैशिष्ट्यांवर अवलंबून राहणे टाळावे.

प्रकार मूल्यांची श्रेणी आकार (बाइट्स)
bool खरे आणि खोटे 1
स्वाक्षरी केलेले चार -128 … 127 1
स्वाक्षरी न केलेले चार 0 … 255 1
स्वाक्षरी लहान int -32 768 … 32 767 2
स्वाक्षरी न केलेले लहान इंट 0 … 65 535 2
लांब int वर स्वाक्षरी केली -2 147 483 648 … 2 147 483 647 4
स्वाक्षरी न केलेले लांब इंट 0 … 4 294 967 295 4
फ्लोट 3.4e-38 … 3.4e+38 4
दुप्पट 1.7e-308 … 1.7C+308 8
लांब दुहेरी 3.4e-4932 … 3.4e+4932 10

वास्तविक प्रकारांसाठी, सारणी किमान आणि कमाल मूल्यांची परिपूर्ण मूल्ये दर्शवते.

सी भाषेत, "डेटा प्रकार" आणि "टाइप मॉडिफायर" या संकल्पनांमध्ये फरक आहे. डेटा प्रकार पूर्णांक आहे आणि सुधारक स्वाक्षरी किंवा स्वाक्षरी नसलेला आहे. स्वाक्षरी केलेल्या पूर्णांकामध्ये सकारात्मक आणि ऋण दोन्ही मूल्ये असतील, तर स्वाक्षरी न केलेल्या पूर्णांकामध्ये फक्त सकारात्मक मूल्ये असतील. सी भाषेत पाच मूलभूत प्रकार आहेत.

  • char - वर्ण.
  • चार प्रकारातील व्हेरिएबलचा आकार 1 बाइट असतो, त्याची मूल्ये कोड टेबलमधील विविध वर्ण असतात, उदाहरणार्थ: 'f', ':', 'j' (जेव्हा प्रोग्राममध्ये लिहिलेले असते, तेव्हा ते सिंगलमध्ये बंद केलेले असतात. अवतरण).

  • int - संपूर्ण.
  • int च्या व्हेरिएबलचा आकार C भाषेच्या मानकामध्ये परिभाषित केलेला नाही. बऱ्याच प्रोग्रामिंग सिस्टममध्ये, इंट व्हेरिएबलचा आकार संपूर्ण मशीन शब्दाच्या आकाराशी संबंधित असतो. उदाहरणार्थ, 16-बिट प्रोसेसरसाठी कंपायलरमध्ये, int प्रकाराच्या व्हेरिएबलचा आकार 2 बाइट्स असतो. या प्रकरणात, या व्हेरिएबलची स्वाक्षरी केलेली मूल्ये -32768 ते 32767 या श्रेणीत असू शकतात.

  • फ्लोट - वास्तविक.
  • फ्लोट कीवर्ड तुम्हाला रिअल टाइपचे व्हेरिएबल्स परिभाषित करण्यास अनुमती देतो. त्यांच्या मूल्यांमध्ये बिंदूने विभक्त केलेला अंशात्मक भाग असतो, उदाहरणार्थ: -5.6, 31.28, इ. वास्तविक संख्या फ्लोटिंग पॉइंट फॉर्ममध्ये देखील लिहिल्या जाऊ शकतात, उदाहरणार्थ: -1.09e+4. "e" चिन्हाच्या आधीच्या संख्येला मँटिसा म्हणतात आणि "e" नंतर घातांक म्हणतात. फ्लोट प्रकाराचे व्हेरिएबल मेमरीमध्ये 32 बिट व्यापते. ते 3.4e-38 ते 3.4e+38 या श्रेणीतील मूल्ये घेऊ शकतात.

  • दुहेरी - दुहेरी अचूकता वास्तविक;
  • दुहेरी कीवर्ड आपल्याला दुहेरी अचूक वास्तविक व्हेरिएबल परिभाषित करण्यास अनुमती देतो. हे फ्लोट व्हेरिएबलच्या दुप्पट मेमरी स्पेस घेते. दुहेरी प्रकाराचे व्हेरिएबल 1.7e-308 ते 1.7e+308 या श्रेणीतील मूल्ये घेऊ शकतात.

  • शून्य - मूल्य नाही.
  • व्हॉइड कीवर्डचा वापर ऑब्जेक्टचे मूल्य तटस्थ करण्यासाठी केला जातो, उदाहरणार्थ, कोणतेही मूल्य न देणारे फंक्शन घोषित करण्यासाठी.

परिवर्तनीय प्रकार:

प्रोग्राम विविध डेटासह कार्य करतात, जे साधे किंवा संरचित असू शकतात. साधा डेटा म्हणजे पूर्णांक आणि वास्तविक संख्या, चिन्हे आणि पॉइंटर्स (मेमरीमधील ऑब्जेक्ट्सचे पत्ते). पूर्णांकांना अपूर्णांक नसतो, परंतु वास्तविक संख्या असतात. संरचित डेटा म्हणजे ॲरे आणि स्ट्रक्चर्स; त्यांची खाली चर्चा केली जाईल.

व्हेरिएबल हा संगणक मेमरीमधील एक सेल आहे ज्याला नाव आहे आणि काही मूल्य साठवले आहे. प्रोग्रामच्या अंमलबजावणीदरम्यान व्हेरिएबलचे मूल्य बदलू शकते. जेव्हा सेलमध्ये नवीन मूल्य लिहिले जाते, तेव्हा जुने मिटवले जाते.

व्हेरिएबल्सला अर्थपूर्ण नाव देणे ही चांगली शैली आहे. व्हेरिएबल नावामध्ये एक ते ३२ वर्ण असू शकतात. लोअरकेस आणि अपरकेस अक्षरे, संख्या आणि अंडरस्कोर वापरण्याची परवानगी आहे, ज्याला C मध्ये एक अक्षर मानले जाते. पहिला वर्ण एक अक्षर असणे आवश्यक आहे. व्हेरिएबलचे नाव आरक्षित शब्दांशी जुळू शकत नाही.

चार टाइप करा

char हा सर्वात किफायतशीर प्रकार आहे. चार प्रकार स्वाक्षरी किंवा अस्वाक्षरित केला जाऊ शकतो. "स्वाक्षरी केलेला चार" (स्वाक्षरी केलेला प्रकार) आणि "अस्वाक्षरित चार" (असाइन केलेला प्रकार) म्हणून दर्शविले जाते. स्वाक्षरी केलेला प्रकार श्रेणी -128 ते +127 मध्ये मूल्ये संचयित करू शकतो. स्वाक्षरी न केलेले - 0 ते 255 पर्यंत. चार व्हेरिएबलसाठी 1 बाइट मेमरी (8 बिट) वाटप केली जाते.

स्वाक्षरी केलेले आणि स्वाक्षरी न केलेले कीवर्ड हे सूचित करतात की घोषित व्हेरिएबलच्या शून्य बिटचा अर्थ कसा लावला जातो, म्हणजे, स्वाक्षरी न केलेला कीवर्ड निर्दिष्ट केला असल्यास, शून्य बिटचा एका संख्येचा भाग म्हणून अर्थ लावला जातो, अन्यथा शून्य बिटचा स्वाक्षरी म्हणून अर्थ लावला जातो.

int टाइप करा

पूर्णांक मूल्य int लहान किंवा लांब असू शकते. लहान कीवर्ड स्वाक्षरी केलेल्या किंवा स्वाक्षरी नसलेल्या कीवर्डच्या नंतर ठेवला जातो. तर असे प्रकार आहेत: स्वाक्षरी केलेले शॉर्ट इंट, साइन न केलेले शॉर्ट इंट, स्वाक्षरी केलेले लाँग इंट, स्वाक्षरी न केलेले लांब इंट.

साइन केलेले शॉर्ट इंट (स्वाक्षरी केलेले लहान पूर्णांक) प्रकाराचे व्हेरिएबल -32768 ते +32767 पर्यंत मूल्ये घेऊ शकतात, स्वाक्षरी न केलेले शॉर्ट इंट (साइन न केलेले लहान पूर्णांक) - 0 ते 65535 पर्यंत. त्या प्रत्येकाला दोन बाइट्स मेमरी वाटप केली जाते (16 बिट्स).

साइन केलेल्या शॉर्ट इंटचे व्हेरिएबल घोषित करताना, साइन केलेले आणि शॉर्ट कीवर्ड वगळले जाऊ शकतात आणि असे व्हेरिएबल प्रकार फक्त int घोषित केले जाऊ शकतात. हा प्रकार एका कीवर्डसह घोषित करणे देखील शक्य आहे, लहान.

स्वाक्षरी न केलेले शॉर्ट इंट व्हेरिएबल अ-साइन केलेले इंट किंवा अ-स्वाक्षरी केलेले शॉर्ट म्हणून घोषित केले जाऊ शकते.

प्रत्येक स्वाक्षरी केलेल्या लांब इंट किंवा अस्वाक्षरित लांब इंट मूल्यासाठी, 4 बाइट्स मेमरी (32 बिट्स) वाटप केल्या जातात. या प्रकारच्या व्हेरिएबल्सची मूल्ये अनुक्रमे -2147483648 ते 2147483647 आणि 0 ते 4294967295 पर्यंतच्या श्रेणींमध्ये असू शकतात.

लाँग लाँग इंट प्रकाराचे व्हेरिएबल्स देखील आहेत, ज्यासाठी 8 बाइट्स मेमरी वाटप केल्या आहेत (64 बिट). त्यावर स्वाक्षरी किंवा स्वाक्षरी केली जाऊ शकते. स्वाक्षरी केलेल्या प्रकारासाठी, मूल्यांची श्रेणी -9223372036854775808 ते 9223372036854775807 पर्यंत आहे, स्वाक्षरी न केलेल्या प्रकारासाठी - 0 ते 18446744073709551615 पर्यंत आहे. एक स्वाक्षरी केलेला शब्द दोन लांबलचक शब्दांद्वारे देखील घोषित केला जाऊ शकतो.

प्रकार श्रेणी हेक्स श्रेणी आकार
स्वाक्षरी न केलेले चार 0 … 255 0x00...0xFF 8 बिट
स्वाक्षरी केलेले चार
किंवा फक्त
चार
-128 … 127 -0x80…0x7F 8 बिट
स्वाक्षरी न केलेले लहान इंट
किंवा फक्त
स्वाक्षरी न केलेले इंटकिंवा स्वाक्षरी न केलेले लहान
0 … 65535 0x0000…0xFFFF 16 बिट
स्वाक्षरी लहान intकिंवा स्वाक्षरी int
किंवा फक्त
लहानकिंवा int
-32768 … 32767 0x8000…0x7FFF 16 बिट
स्वाक्षरी न केलेले लांब इंट
किंवा फक्त
स्वाक्षरी केलेले लांब
0 … 4294967295 0x00000000 … 0xFFFFFFFF 32 बिट
लांब सही केली
किंवा फक्त
लांब
-2147483648 … 2147483647 0x80000000 … 0x7FFFFFFF 32 बिट
स्वाक्षरी न केलेले लांब लांब 0 … 18446744073709551615 0x0000000000000000 … 0xFFFFFFFFFFFFFFF 64 बिट
लांब सही केली
किंवा फक्त
लांब लांब
-9223372036854775808 … 9223372036854775807 0x8000000000000000 … 0x7FFFFFFFFFFFFFFF 64 बिट

व्हेरिएबल्स घोषित करणे

व्हेरिएबल्स डिक्लेरेशन स्टेटमेंटमध्ये घोषित केले जातात. डिक्लेरेशन स्टेटमेंटमध्ये टाइप स्पेसिफिकेशन आणि व्हेरिएबल नावांची स्वल्पविरामाने विभक्त केलेली यादी असते. शेवटी अर्धविराम असणे आवश्यक आहे.

[मॉडिफायर्स] type_specifier identifier [, identifier] ...

सुधारक - स्वाक्षरी केलेले, स्वाक्षरी न केलेले, लहान, लांब कीवर्ड.
टाइप स्पेसिफायर हा चार किंवा इंट कीवर्ड आहे जो घोषित केलेल्या व्हेरिएबलचा प्रकार निर्दिष्ट करतो.
आयडेंटिफायर हे व्हेरिएबलचे नाव आहे.

चार x; int a, b, c; स्वाक्षरी न केलेले लांब लांब y;

घोषित केल्यावर, व्हेरिएबल आरंभ केले जाऊ शकते, म्हणजेच प्रारंभिक मूल्य नियुक्त केले जाऊ शकते.

इंट x = 100;

घोषित केल्यावर, व्हेरिएबल x मध्ये ताबडतोब 100 क्रमांक असेल. आरंभिक व्हेरिएबल्स वेगळ्या ओळींवर घोषित करणे चांगले आहे.

प्रोग्रामिंगमध्ये, डेटा प्रकार हा दोन संचांचा संग्रह आहे: मूल्यांचा संच आणि त्यांच्यावर लागू केल्या जाऊ शकणाऱ्या ऑपरेशन्सचा संच. उदाहरणार्थ, बेरीज (+), गुणाकार (*), पूर्णांक भागाकार (/), शेष (%) आणि वजाबाकी (−) या नैसर्गिक संख्यांचा मर्यादित संच असलेल्या गैर-ऋणात्मक पूर्णांक डेटा प्रकारावर लागू केल्या जाऊ शकतात.

प्रोग्रामिंग भाषेमध्ये सामान्यत: आदिम डेटा प्रकारांचा संच असतो-प्रोग्रामिंग भाषेद्वारे मूलभूत अंगभूत युनिट म्हणून प्रदान केलेले प्रकार. C++ मध्ये, भाषेचा निर्माता अशा प्रकारांना मूलभूत प्रकार म्हणतो. C++ मधील मूलभूत प्रकार आहेत:

  • बुलियन (बूल);
  • वर्ण (उदा. चार);
  • int (उदा. int);
  • फ्लोटिंग पॉइंट (उदा. फ्लोट);
  • गणना (प्रोग्रामरद्वारे परिभाषित);
  • शून्य

सूचीबद्ध केलेल्या शीर्षस्थानी, खालील प्रकार तयार केले आहेत:

  • प्रात्यक्षिक (उदा. int*);
  • ॲरे (उदा. चार);
  • संदर्भ (उदा. दुहेरी&);
  • इतर संरचना.

चला शाब्दिक संकल्पनेकडे जाऊ या (उदाहरणार्थ, 1, 2.4F, 25e-4, 'a', इ.): शाब्दिक ही प्रोग्रामच्या स्त्रोत कोडमधील एक एंट्री आहे जी निश्चित मूल्य दर्शवते. दुसऱ्या शब्दांत, शाब्दिक म्हणजे प्रोग्राम कोडमधील काही प्रकारच्या ऑब्जेक्टचे (मूल्य) प्रतिनिधित्व. C++ मध्ये पूर्णांक, फ्लोटिंग पॉइंट, वर्ण, बुलियन आणि स्ट्रिंग व्हॅल्यू लिहिण्याची क्षमता आहे.

पूर्णांक प्रकार शाब्दिक असे लिहिले जाऊ शकते:

  • 10वी संख्या प्रणाली. उदाहरणार्थ, 1205;
  • 0 + क्रमांकाच्या स्वरूपातील 8 वी संख्या प्रणाली. उदाहरणार्थ, 0142;
  • 0x + क्रमांकाच्या स्वरूपात 16 वी क्रमांक प्रणाली. उदाहरणार्थ, 0x2F.

24, 030, 0x18 - हे सर्व वेगवेगळ्या संख्या प्रणालींमधील समान संख्येचे रेकॉर्ड आहेत.
फ्लोटिंग पॉइंट नंबर लिहिण्यासाठी, डॉट नोटेशन वापरा: 0.1, .5, 4. - एकतर मध्ये
घातांक अंकन - 25e-100. अशा नोंदीमध्ये कोणतीही जागा नसावी.

ज्या नावाशी आपण अक्षरांमध्ये लिहिलेली मूल्ये जोडू शकतो त्याला व्हेरिएबल म्हणतात. व्हेरिएबल हे मेमरीचे नामांकित किंवा अन्यथा पत्ता करण्यायोग्य क्षेत्र आहे ज्याचा पत्ता डेटामध्ये प्रवेश करण्यासाठी वापरला जाऊ शकतो. प्रोग्रामच्या अंमलबजावणीदरम्यान हा डेटा एका विशिष्ट प्रकारे मेमरीमध्ये लिहिला जातो, पुन्हा लिहिला जातो आणि मिटविला जातो. व्हेरिएबल तुम्हाला कधीही डेटा ऍक्सेस करण्याची परवानगी देतो आणि आवश्यक असल्यास, तो बदलू शकतो. व्हेरिएबलच्या नावावरून जो डेटा मिळवता येतो त्याला व्हेरिएबलचे मूल्य म्हणतात.
प्रोग्राममध्ये व्हेरिएबल वापरण्यासाठी, ते घोषित करणे आवश्यक आहे आणि आवश्यक असल्यास, ते परिभाषित केले जाऊ शकते (= आरंभिक). प्रोग्राम टेक्स्टमधील व्हेरिएबलच्या घोषणेमध्ये 2 भाग असणे आवश्यक आहे: बेस प्रकार आणि घोषणाकर्ता. स्पेसिफायर आणि इनिशिएलायझर हे पर्यायी भाग आहेत:

const int उदाहरण = 3; // येथे const एक निर्दिष्टकर्ता आहे // int हा बेस प्रकार आहे // उदाहरण हे व्हेरिएबलचे नाव आहे // = 3 - इनिशिएलायझर.

व्हेरिएबल नाव हे लॅटिन वर्णमाला (लोअरकेस आणि अपरकेस), संख्या आणि/किंवा अंडरस्कोर असलेल्या वर्णांचा एक क्रम आहे, परंतु पहिला वर्ण संख्या असू शकत नाही. व्हेरिएबलचे नाव निवडले पाहिजे जेणेकरून ते काय संग्रहित करते याचा अंदाज लावणे नेहमीच सोपे असते, उदाहरणार्थ, “महिना पेमेंट”. नोट्समध्ये आणि व्यवहारात, व्हेरिएबल्स रेकॉर्ड करण्याच्या नियमांसाठी आम्ही कॅमलकेस नोटेशन वापरू. व्हेरिएबल नाव भाषेतील आरक्षित शब्दांशी एकरूप होऊ शकत नाही; अशा शब्दांची उदाहरणे आहेत: if, while, function, goto, switch इ.

व्हेरिएबलच्या नावाव्यतिरिक्त, घोषणाकर्त्यामध्ये अतिरिक्त वर्ण असू शकतात:

  • * - सूचक; नावापूर्वी;
  • *const - स्थिर सूचक; नावापूर्वी;
  • & - दुवा; नावापूर्वी;
  • - रचना; नावानंतर;
  • () - कार्य; नाव नंतर.

इनिशिएलायझर तुम्हाला व्हेरिएबलच्या घोषणेनंतर लगेच मूल्य परिभाषित करण्याची परवानगी देतो. इनिशिएलायझरची सुरुवात समानता शाब्दिक (=) ने होते आणि नंतर व्हेरिएबलचे मूल्य सेट करण्यासाठी पुढे जाते. सर्वसाधारणपणे, C++ मधील समान चिन्ह असाइनमेंट ऑपरेशन दर्शवते; त्याच्या मदतीने तुम्ही व्हेरिएबलचे मूल्य सेट आणि बदलू शकता. वेगवेगळ्या प्रकारांसाठी ते वेगळे असू शकते.

विनिर्देशक प्रकाराव्यतिरिक्त अतिरिक्त गुणधर्म निर्दिष्ट करतो. उदाहरणामध्ये दिलेला कॉन्स्ट स्पेसिफायर तुम्हाला व्हेरिएबलच्या व्हॅल्यूमध्ये पुढील बदल प्रतिबंधित करण्यास अनुमती देतो. अशा अपरिवर्तनीय चलांना स्थिर किंवा स्थिर म्हणतात.

प्रारंभ न करता स्थिरता घोषित करणे तार्किक कारणांसाठी कार्य करणार नाही:

कॉन्स्ट इंट EMPTY_CONST; // त्रुटी, स्थिर व्हेरिएबल प्रारंभ केलेले नाही const int EXAMPLE = 2; // मूल्य 2 सह स्थिरांक EXAMPLE = 3; // त्रुटी, स्थिर व्हेरिएबलला मूल्य नियुक्त करण्याचा प्रयत्न करा

स्थिरांकांचे नामकरण करताना, केवळ कॅपिटल अक्षरे वापरण्याची प्रथा आहे, अंडरस्कोर वर्णाने शब्द वेगळे करणे.

C++ मधील मूलभूत डेटा प्रकार

प्रत्येक प्रकाराचे परीक्षण करताना, वाचकाने डेटा प्रकाराची व्याख्या विसरू नये.

1. पूर्णांक प्रकार (char, short (int), int, long (int), long long)

नावावरून हे समजणे सोपे आहे की मूल्यांच्या संचामध्ये पूर्णांक असतात. तसेच, प्रत्येक सूचीबद्ध प्रकारांच्या मूल्यांचा संच स्वाक्षरी किंवा स्वाक्षरी केलेला असू शकतो. संचामध्ये समाविष्ट असलेल्या घटकांची संख्या त्या प्रकारचे मूल्य संचयित करण्यासाठी वापरल्या जाणाऱ्या मेमरीच्या आकारावर अवलंबून असते. उदाहरणार्थ, चार प्रकाराच्या व्हेरिएबलसाठी 1 बाइट मेमरी वाटप केली जाते, त्यामुळे एकूण घटक असतील:

  • 2 8N = 2 8 * 1 = 256, जेथे N हा मूल्य संचयित करण्यासाठी बाइट्समधील मेमरीचा आकार आहे

या प्रकरणात, उपलब्ध पूर्णांकांच्या श्रेणी खालीलप्रमाणे आहेत:

  • - स्वाक्षरी नसलेल्या चारसाठी
  • [-१२८..१२७] - स्वाक्षरी केलेल्या चारसाठी

डीफॉल्टनुसार, पूर्णांक व्हेरिएबल साइन केलेले मानले जाते. कोडमध्ये दर्शविण्यासाठी व्हेरिएबलची स्वाक्षरी न केलेली असणे आवश्यक आहे, एक स्वाक्षरी केलेली विशेषता डावीकडील बेस प्रकारात जोडली आहे, म्हणजे. स्वाक्षरी न केलेले:

स्वाक्षरी न केलेले लांब मूल्ये; // पूर्णांक (लांब) स्वाक्षरी न केलेला प्रकार निर्दिष्ट करते.

सूचीबद्ध प्रकार फक्त स्टोरेजसाठी आवश्यक असलेल्या मेमरीच्या आकारात भिन्न आहेत. C++ भाषा मशीनवर अवलंबून असल्याने, भाषा मानक फक्त खालील अटींची हमी देते:

  • 1 = चार आकार ≤ लहान आकार ≤ इंट आकार ≤ लांब आकार.

सामान्यत: प्रकारांचे आकार खालीलप्रमाणे असतात: char - 1, short - 2, int - 4, long -8, long long - 8 bytes.

तुम्ही पूर्णांक प्रकाराच्या मूल्यांसह अंकगणित ऑपरेशन्स करू शकता: +, -, *, /, %; तुलना ऑपरेशन्स: ==, !=,<=, <, >, >=; बिट ऑपरेशन्स: &, |, xor,<<, >>.
बहुतेक ऑपरेशन्स, जसे की बेरीज, गुणाकार, वजाबाकी आणि तुलना, समजून घेणे सोपे आहे. कधीकधी, अंकगणित ऑपरेशन्स केल्यानंतर, परिणाम मूल्यांच्या श्रेणीबाहेर असू शकतो; या प्रकरणात प्रोग्राम त्रुटी निर्माण करेल.
पूर्णांक भागाकार (/) एका पूर्णांकाचा भाग दुसऱ्या पूर्णांकाचा भाग शोधतो. उदाहरणार्थ:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

टक्केवारी चिन्ह (%) दोन पूर्णांकांच्या विभागणीचे उर्वरित भाग निर्धारित करण्याच्या ऑपरेशनला सूचित करते:

  • 6 % 4 = 2;
  • 10 % 3 = 1.

ऑपरेशन्स bitwise आहेत समजून घेणे अधिक कठीण आहे: & (AND), | (OR), xor (अनन्य OR),<< (побитовый сдвиг влево), >> (बिटवाइज उजवीकडे शिफ्ट).

बिट ऑपरेशन्स AND, OR आणि XOR माहितीच्या प्रत्येक बिटवर संबंधित लॉजिकल ऑपरेशन लागू करतात:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 xor 3 10 = 01 2 xor 11 2 = 10 2

इमेज प्रोसेसिंगमध्ये, रंगासाठी 3 चॅनेल वापरले जातात: लाल, निळा आणि हिरवा - तसेच पारदर्शकता, जी इंट व्हेरिएबलमध्ये संग्रहित केली जाते, कारण प्रत्येक चॅनेलची मूल्यांची श्रेणी 0 ते 255 पर्यंत असते. हेक्साडेसिमल क्रमांक प्रणालीमध्ये, एक विशिष्ट मूल्य खालीलप्रमाणे लिहिलेले असते: 0x180013FF; नंतर मूल्य 18 16 लाल चॅनेलशी संबंधित आहे, 00 16 - निळा, 13 16 - हिरवा, FF - अल्फा चॅनेल (पारदर्शकता). अशा पूर्णांकातून विशिष्ट चॅनेल निवडण्यासाठी, तथाकथित चॅनेल वापरला जातो. मुखवटा, जेथे आमच्यासाठी स्वारस्य असलेल्या पोझिशन्स F 16 किंवा 1 2 आहेत. म्हणजेच, ब्लू चॅनेलचे मूल्य हायलाइट करण्यासाठी, आपण मास्क वापरणे आवश्यक आहे, म्हणजे. bitwise आणि:

इंट ब्लू_चॅनेल = 0x180013FF & 0x00FF0000;

त्यानंतर परिणामी मूल्य आवश्यक संख्येने बिट्सद्वारे उजवीकडे हलविले जाते.

बिट शिफ्ट ऑपरेशनच्या उजव्या बाजूला निर्दिष्ट केल्याप्रमाणे अनेक बायनरी अंकांनी डावीकडे किंवा उजवीकडे बदलते. उदाहरणार्थ, चार प्रकारासाठी क्रमांक 39 बायनरीमध्ये खालीलप्रमाणे लिहिलेला आहे: 00100111. नंतर:

चार बायनरी उदाहरण = 39; // 00100111 चार परिणाम = बायनरी उदाहरण<< 2; // сдвигаем 2 бита влево, результат: 10011100

जर व्हेरिएबल स्वाक्षरी न केलेला प्रकार असेल, तर परिणाम 156 क्रमांक असेल, स्वाक्षरीसाठी ते -100 च्या बरोबरीचे असेल. लक्षात घ्या की स्वाक्षरी केलेल्या पूर्णांक प्रकारांसाठी, बिट प्रतिनिधित्वाच्या सर्वात लक्षणीय बिटमधील एकक हे चिन्ह आहे की संख्या ऋण आहे. या प्रकरणात, बायनरी स्वरूपातील मूल्य ज्यामध्ये सर्वांचा समावेश आहे -1 शी संबंधित आहे; जर 1 फक्त सर्वात लक्षणीय अंकात असेल आणि उर्वरित अंक शून्य असतील, तर अशा संख्येचे विशिष्ट प्रकारासाठी किमान मूल्य आहे: char साठी ते -128 आहे.

2. फ्लोटिंग पॉइंट प्रकार (फ्लोट, डबल (फ्लोट))

फ्लोटिंग-पॉइंट मूल्यांचा संच वास्तविक संख्यांचा उपसंच आहे, परंतु प्रत्येक वास्तविक संख्या बायनरीमध्ये दर्शविली जाऊ शकत नाही, ज्यामुळे कधीकधी मूर्ख चुका होतात:

फ्लोट मूल्य = 0.2; मूल्य == ०.२; // त्रुटी, येथे मूल्य 0.2 च्या समान असणार नाही.

फ्लोटिंग-पॉइंट व्हेरिएबल्ससह काम करताना, प्रोग्रामरने समानता किंवा असमानता चाचणी वापरू नये; त्याऐवजी, ठराविक अंतरामध्ये येण्यासाठी चाचणी वापरली जाते:

मूल्य - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

तुलना ऑपरेशन्स व्यतिरिक्त, फ्लोटिंग पॉइंट प्रकार 4 अंकगणित ऑपरेशन्सना समर्थन देतो जे वास्तविक संख्यांसह गणितीय ऑपरेशन्सशी पूर्णपणे जुळतात.

3. बुलियन (तार्किक) प्रकार (बूल)

फक्त दोन मूल्ये असतात: सत्य (सत्य) आणि असत्य (असत्य). या प्रकारच्या व्हेरिएबल्ससह कार्य करण्यासाठी, लॉजिकल ऑपरेशन्स वापरली जातात: ! (नाही), == (समानता), != (असमानता), && (तार्किक आणि), || (तार्किक किंवा). प्रत्येक ऑपरेशनचे परिणाम संबंधित सत्य सारणीमध्ये आढळू शकतात. उदाहरणार्थ:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

४. वर्ण प्रकार (char, wchar_t)

चार प्रकार हा केवळ पूर्णांक प्रकार नसतो (सामान्यत: या प्रकाराला बाइट म्हणतात), परंतु एक वर्ण प्रकार देखील असतो, जो सारणीमधील वर्ण क्रमांक ASCII वर्ण म्हणून संग्रहित करतो. उदाहरणार्थ, कोड 0x41 अक्षर 'A', आणि 0x71 - 't' या वर्णाशी संबंधित आहे.

कधीकधी ASCII सारण्यांमध्ये निश्चित नसलेली वर्ण वापरणे आवश्यक होते आणि म्हणून स्टोरेजसाठी 1 बाइटपेक्षा जास्त आवश्यक असते. त्यांच्यासाठी एक विस्तृत वर्ण आहे (wchar_t).

५.१. ॲरे

ॲरे तुम्हाला समान प्रकारच्या घटकांचा अनुक्रमिक संच संचयित करण्याची परवानगी देतात. ॲरे मेमरीमध्ये एक संलग्न ब्लॉक म्हणून संग्रहित केला जातो, त्यामुळे तुम्ही त्याचा आकार निर्दिष्ट केल्याशिवाय ॲरे घोषित करू शकत नाही. ॲरे घोषित करण्यासाठी, त्याचे आकार दर्शविणाऱ्या व्हेरिएबलच्या नावानंतर चौरस कंस () लिहिले जातात. उदाहरणार्थ:

इंट myArray; // पूर्णांक प्रकारातील 5 घटकांचा ॲरे

ॲरे सुरू करण्यासाठी, मूल्ये कुरळे ब्रेसेसमध्ये सूचीबद्ध आहेत. तुम्ही केवळ व्हेरिएबल डिक्लेरेशनच्या वेळीच अशा प्रकारे इनिशियलाइज करू शकता. तसे, या प्रकरणात ॲरेचा आकार निर्दिष्ट करणे आवश्यक नाही:

इंट ऑड्स = (1, 3, 7, 9, 11); // ॲरे 5 व्हॅल्यूसह प्रारंभ केला आहे

ॲरे (ॲरे एलिमेंट) मध्ये विशिष्ट मूल्य ॲक्सेस करण्यासाठी, इंडेक्स ऍक्सेस ऑपरेशन () वापरा जे घटक क्रमांक दर्शवते (संख्या 0 पासून सुरू होते). उदाहरणार्थ:

शक्यता; // ॲरेच्या पहिल्या घटकामध्ये प्रवेश. मूल्य 1 विषमता मिळवते; // तिसऱ्या घटकात प्रवेश. मूल्य 7 विषमता = 13 मिळवते; // ॲरे ऑड्सच्या 5 व्या घटकाला नवीन मूल्य नियुक्त करा; // प्रवेश त्रुटी

५.३. तार

स्ट्रिंग लिहिण्यासाठी, प्रोग्रामर ही कल्पना वापरतात की स्ट्रिंग ही वर्णांची अनुक्रमिक मालिका (ॲरे) आहे. ओळीचा शेवट ओळखण्यासाठी, ओळीचा शेवटचा विशेष वर्ण वापरा: '\0'. बॅकस्लॅश आणि ओळखणारे वर्ण असलेल्या या विशेष वर्णांना कंट्रोल किंवा एस्केप कॅरेक्टर म्हणतात. तेथे देखील आहेत, उदाहरणार्थ, '\n' - नवीन ओळीची सुरुवात, '\t' - सारणी. स्ट्रिंगमध्ये बॅकस्लॅश लिहिण्यासाठी, एस्केप वापरला जातो - दुसरा स्लॅश चिन्हाच्या आधी ठेवला जातो: '\'. एस्केपिंगचा वापर अवतरण चिन्ह लिहिण्यासाठी देखील केला जातो.

चला एक स्ट्रिंग व्हेरिएबल बनवू:

चार मजकूर उदाहरण = ('T', 'e', ​​'s', 't', '\0'); // स्ट्रिंग "चाचणी" लिहिलेली आहे

स्ट्रिंग इनिशिएलायझेशनसाठी एक सरलीकृत नोटेशन आहे:

चार मजकूर उदाहरण = “चाचणी”; // शेवटचे अक्षर लिहिलेले नाही, परंतु आकार अद्याप 5 आहे

तपशीलात न जाता, येथे आणखी एक उपयुक्त डेटा प्रकार आहे - स्ट्रिंग. तार
हा प्रकार, उदाहरणार्थ, जोडला जाऊ शकतो:

स्ट्रिंग हॅलो = "हॅलो,"; string name = "मॅक्स!"; स्ट्रिंग hello_name = hello + name; // स्ट्रिंग मिळवा "हॅलो, कमाल!"

6. दुवा

इंट a = 2; // व्हेरिएबल "a" मूल्य 2 int &b = a; // व्हेरिएबल "b" त्याच ठिकाणी "a" b = 4 दर्शवते; // b चे मूल्य बदलून, प्रोग्रामर a चे मूल्य बदलतो. आता a = 4 int &c = 4; // त्रुटी, कारण आपण हे करू शकत नाही संदर्भ मूल्य नियुक्त केले जाऊ शकत नाही

7. निर्देशांक

हा डेटा प्रकार समजून घेण्यासाठी, तुम्हाला हे लक्षात ठेवणे आवश्यक आहे की या प्रकारच्या अनेक मूल्ये मेमरी सेलचे पत्ते आहेत जिथे डेटा सुरू होतो. पॉइंटर बेरीज (+), वजाबाकी (-) आणि dereference (*) ऑपरेशनला देखील सपोर्ट करतो.

पत्ते 0x0 म्हणजे पॉइंटर रिक्त आहे, म्हणजे. कोणत्याही डेटाकडे निर्देश करत नाही. या पत्त्याचे स्वतःचे शाब्दिक आहे - NULL:

इंट *nullPtr = NULL; // शून्य पॉइंटर

पूर्णांक किंवा दुसऱ्या पत्त्यासह पत्ता जोडणे आणि वजा करणे अनुमती देते
प्रोग्रामला उपलब्ध असलेल्या मेमरीभोवती फिरणे.

पॉइंटरमध्ये साठवलेल्या पत्त्यापासून सुरू होणारा डेटा पुनर्प्राप्त करण्याच्या ऑपरेशनला डीरेफरन्सिंग (*) म्हणतात. प्रोग्राम मेमरी सेलची आवश्यक संख्या वाचतो आणि मेमरीमध्ये संग्रहित मूल्य परत करतो.

int valueInMemory = 2; // पूर्णांक प्रकाराचे व्हेरिएबल सेट करा int *somePtr = // व्हेरिएबलचा पत्ता कॉपी करा, येथे & - somePtr व्हेरिएबलचा पत्ता परत करा; // मेमरी सेलचा पत्ता, उदाहरणार्थ, 0x2F *somePtr; // मूल्य 4 सेलमध्ये साठवले जाते: 0x2F, 0x30, 0x31 आणि 0x32

असाइनमेंट ऑपरेशन, जे सिंटॅक्टली कॉपी ऑपरेशनसारखेच आहे, पॉइंटर्ससाठी उपलब्ध नाही. दुसऱ्या शब्दांत, तुम्ही दुसऱ्या पॉइंटरचा पत्ता किंवा व्हेरिएबलचा पत्ता कॉपी करू शकता, परंतु तुम्ही स्वतः पत्त्याचे मूल्य ठरवू शकत नाही.

पॉइंटर स्वतः मेमरीमध्ये संग्रहित केला जातो, इतर प्रकारच्या व्हेरिएबल्सच्या मूल्यांप्रमाणे, आणि 4 बाइट व्यापतो, त्यामुळे तुम्ही पॉइंटरसाठी पॉइंटर तयार करू शकता.

8. बदल्या

प्रोग्रॅमरने परिभाषित केलेला गणन हा एकमेव मूलभूत प्रकार आहे. मोठ्या प्रमाणात, गणना हा नामांकित पूर्णांक स्थिरांकांचा क्रमबद्ध संच आहे, ज्याचे नाव मूळ प्रकार आहे.

एनम रंग (लाल, निळा, हिरवा);

डीफॉल्टनुसार, RED = 0, BLUE = 1, GREEN = 2. म्हणून, मूल्यांची एकमेकांशी तुलना केली जाऊ शकते, उदा. लाल< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

एनम ऍक्सेस (READ = 1, WRITE = 2, EXEC = 4);

ज्यांची मूल्ये दोन शक्ती आहेत अशा गणनेचा वापर करणे अनेकदा सोयीचे असते, कारण बायनरी प्रतिनिधित्वामध्ये, 2 ची घात असलेली संख्या 1 आणि शून्य असेल. उदाहरणार्थ:

8 10 = 00001000 2

या संख्या एकत्र जोडण्याचा परिणाम नेहमी स्पष्टपणे दर्शवतो की कोणती संख्या जोडली गेली:

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

शून्य

सिंटॅक्टिकली, शून्य प्रकार मूलभूत प्रकारांशी संबंधित आहे, परंतु तो फक्त अधिक जटिल प्रकारांचा भाग म्हणून वापरला जाऊ शकतो, कारण शून्य प्रकारची कोणतीही वस्तू नाहीत. सामान्यतः, हा प्रकार फंक्शनला कोणतेही रिटर्न व्हॅल्यू नाही किंवा अपरिभाषित प्रकारच्या ऑब्जेक्ट्ससाठी पॉइंटरचा बेस प्रकार म्हणून सूचित करण्यासाठी वापरला जातो:

शून्य वस्तु; // त्रुटी, void void // error या प्रकारची कोणतीही वस्तू नाहीत, void void *ptr चे कोणतेही संदर्भ नाहीत; // ठीक आहे, अज्ञात प्रकारासाठी पॉइंटर संचयित करा

फंक्शन कोणतीही व्हॅल्यू देत नाही हे दर्शविण्यासाठी अनेकदा आपण void वापरतो. जेव्हा प्रोग्रामर मेमरीच्या अखंडतेची आणि योग्य प्रकारची कास्टिंगची संपूर्ण जबाबदारी घेतो तेव्हा शून्य प्रकारचा पॉइंटर वापरला जातो.

कास्ट

एका प्रकारच्या व्हेरिएबलचे मूल्य दुसऱ्या प्रकारात टाकणे अनेकदा आवश्यक असते. जर मूळ प्रकाराच्या मूल्यांचा संच मोठ्या प्रकाराचा उपसंच असेल (उदाहरणार्थ, int हा लांबचा उपसंच आहे आणि लांब म्हणजे दुहेरी आहे), कंपाइलर स्पष्टपणे सक्षम आहे ( स्पष्टपणे) मूल्य प्रकार बदला.

पूर्णांक = 2; float floating = पूर्णांक; // फ्लोटिंग = 2.0

रिव्हर्स टाईप कास्ट माहितीच्या नुकसानासह केले जाईल, त्यामुळे फ्लोटिंग-पॉइंट नंबरचा फक्त पूर्णांक भाग राहील, अपूर्णांक भाग गमावला जाईल.

स्पष्ट प्रकार रूपांतरणाची शक्यता आहे; यासाठी, व्हेरिएबलच्या डावीकडे किंवा मूळ प्रकाराचे कोणतेही मूल्य, कंसात कोणत्या प्रकारात कास्ट केले जाईल ते लिहा:

इंट व्हॅल्यू = (इंट) 2.5;

युनरी आणि बायनरी ऑपरेशन्स

आम्ही यापूर्वी केलेल्या ऑपरेशन्सना बायनरी म्हणतात: ऑपरेशन चिन्हाच्या डावीकडे आणि उजवीकडे मूल्ये किंवा व्हेरिएबल्स आहेत, उदाहरणार्थ, 2 + 3. बायनरी ऑपरेशन्स व्यतिरिक्त, प्रोग्रामिंग भाषा देखील युनरी ऑपरेशन्स वापरतात जी व्हेरिएबल्सवर लागू होतात. . ते व्हेरिएबलच्या डावीकडे किंवा उजवीकडे स्थित असू शकतात; अशा अनेक ऑपरेशन्स याआधी समोर आल्या आहेत - डीरेफरन्सिंग ऑपरेशन (*) आणि व्हेरिएबलचा पत्ता (&) घेणे हे एकसमान आहे. ऑपरेटर “++” आणि “—” पूर्णांक व्हेरिएबलचे मूल्य अनुक्रमे 1 ने वाढवतात आणि कमी करतात आणि ते व्हेरिएबलच्या डावीकडे किंवा उजवीकडे लिहिले जाऊ शकतात.

जेव्हा अभिव्यक्तीच्या डाव्या आणि उजव्या बाजूस समान व्हेरिएबल असते, तेव्हा C++ बायनरी ऑपरेशन्ससाठी शॉर्टहँड नोटेशन देखील वापरते, म्हणजे. काही ऑपरेशन व्हेरिएबलच्या व्हॅल्यूवर केले जातात आणि ऑपरेशनचा परिणाम त्याच व्हेरिएबलमध्ये संग्रहित केला जातो:

A += 2; // समान a = a + 2; b /= 5; // समान b = b / 5; c &= 3; // समान c = c & 3;