अक्षर स्थिर. A2.5.2.

बऱ्याचदा, सॉफ्टवेअर उत्पादक ऑफर करतात ... 04.04.2019

ru

क्वांटम मेकॅनिक्समधील गतीचे समीकरण, जे विविध बल क्षेत्रांमधील सूक्ष्म कणांच्या हालचालीचे वर्णन करते, हे एक समीकरण असावे ज्यातून कणांचे तरंग गुणधर्म अनुसरतील. ते वेव्ह फंक्शन Ψ( साठी समीकरण असले पाहिजे एक्स,येथे,z,t), मूल्य पासून Ψ 2 एका क्षणात कण व्हॉल्यूममध्ये असण्याची संभाव्यता निर्धारित करते.

मूलभूत समीकरण ई द्वारे तयार केले जाते. श्रोडिंगर: समीकरण व्युत्पन्न केलेले नाही, परंतु मांडलेले आहे.

श्रोडिंगर समीकरणफॉर्म आहे:

- ΔΨ +U(x,y,z,t= iħ, (33.9)

कुठे ħ=ता/(2π ), टी-कण वस्तुमान, Δ-लॅप्लेस ऑपरेटर , i- काल्पनिक युनिट, यू(x,y,z,t) हे बल क्षेत्रामध्ये कणाचे संभाव्य कार्य आहे ज्यामध्ये ते हलते, Ψ( x,y,z,t) हे कणाचे इच्छित वेव्ह फंक्शन आहे.

समीकरण (32.9) आहे सामान्य श्रोडिंगर समीकरण. याला वेळ-आश्रित श्रोडिंगर समीकरण असेही म्हणतात. अनेकांसाठी भौतिक घटना, मायक्रोवर्ल्डमध्ये उद्भवणारे, समीकरण (33.9) हे वेळेवर Ψ चे अवलंबित्व काढून टाकून सोपे केले जाऊ शकते, दुसऱ्या शब्दांत, स्थिर अवस्थांसाठी श्रोडिंगर समीकरण शोधा - स्थिर ऊर्जा मूल्यांसह राज्ये. कण ज्या फोर्स फील्डमध्ये फिरतो ते स्थिर असेल, म्हणजे फंक्शन असल्यास हे शक्य आहे यू(x,y,z,t) वेळेवर स्पष्टपणे अवलंबून नाही आणि संभाव्य ऊर्जेचा अर्थ आहे.

Ψ + ( -यू)Ψ = ०. (३३.१०)

समीकरण (33.10) म्हणतात स्थिर अवस्थांसाठी श्रोडिंगर समीकरण.

हे समीकरण पॅरामीटर म्हणून समाविष्ट आहे एकूण ऊर्जा कण समीकरणाचे निराकरण पॅरामीटरच्या कोणत्याही मूल्यांसाठी होत नाही , पण फक्त तेव्हाच एक निश्चित संच, या कार्यासाठी वैशिष्ट्यपूर्ण. या ऊर्जा मूल्यांना इजिनव्हॅल्यूज म्हणतात. Eigenvalues एक सतत आणि स्वतंत्र मालिका तयार करू शकते.

३३.५. अनंत उंच “भिंती” असलेल्या एका-आयामी आयताकृती “संभाव्य विहिरी” मधील कण

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

अनंत उंच “भिंती” (चित्र 33.1) असलेल्या एका-आयामी आयताकृती “संभाव्य विहिरी” मधील मुक्त कणाला लागू केल्याप्रमाणे श्रोडिंगर समीकरणाच्या समाधानाचे गुणात्मक विश्लेषण करूया. अशा "भोक" चे वर्णन फॉर्मच्या संभाव्य उर्जेद्वारे केले जाते (साधेपणासाठी आपण असे गृहीत धरतो की कण अक्षाच्या बाजूने फिरतो. एक्स)

∞, x< 0

यू(x) = {0, 0≤ x ≤ l}(33.11)

∞, x > 1

कुठे l- "भोक" ची रुंदी, आणि उर्जा त्याच्या तळापासून मोजली जाते (चित्र 33.1).

एका-आयामी समस्येच्या बाबतीत स्थिर अवस्थांसाठी श्रोडिंगर समीकरण फॉर्ममध्ये लिहिले जाईल

+ (ई-यू = 0. (33.12)

समस्येच्या परिस्थितीनुसार (अनंत उंच “भिंती”), कण “भोक” च्या पलीकडे प्रवेश करत नाही, म्हणून “भोक” च्या बाहेर त्याच्या शोधण्याची (आणि परिणामी, वेव्ह फंक्शन) संभाव्यता शून्य आहे. "खड्डा" च्या सीमेवर (वर एक्स=0 आणि x=l) सतत वेव्ह फंक्शन देखील नाहीसे होणे आवश्यक आहे. त्यामुळे, मध्ये सीमा परिस्थिती या प्रकरणातसारखे दिसते

Ψ(0)=Ψ( l)=0. (33.13)

"विहीर" मध्ये श्रोडिंगर समीकरण समीकरणात कमी केले जाईल

+ इΨ = 0. (33.14)

स्थिर श्रोडिंगर समीकरण, जे असीम उच्च "भिंती" असलेल्या "संभाव्य विहिरी" मधील कणाच्या हालचालीचे वर्णन करते तेव्हाच समाधानी होते eigenvalues ई पीपूर्णांकावर अवलंबून n.

E p =,(n = 1, 2, 3, …).(33.15)

I/O

आउटपुट कार्ये:

%d एक स्वाक्षरी पूर्णांक आहे

%u - स्वाक्षरी न केलेला पूर्णांक

%f-वास्तविक संख्या

%s-वर्ण

इनपुट कार्ये:

24 सी भाषा डेटा प्रकार.

लांब इंट काउंटर;

अंकगणित स्थिरांक.

किंवा हेक्साडेसिमलमध्ये:

\a बेल सिग्नल

\\ बॅकस्लॅश

\b पायरीवर परत (डाउनहोल)

\f पृष्ठ फीड

\n नवीन ओळ

\r कॅरेज रिटर्न

\? प्रश्नचिन्ह

\" एकल कोट

\” दुहेरी कोट

\ooo ऑक्टल कोड

\xhh हेक्साडेसिमल कोड

काळजी घ्या आणि लक्षात ठेवा वर्ण स्थिरआणि एक वर्ण असलेली स्ट्रिंग समान गोष्ट नाही: "x" "x" सारखी नाही. एंट्री "x" मानक वर्ण सेटमधील अक्षर x च्या कोडच्या समान पूर्णांक मूल्य दर्शवते आणि एंट्री "x" एक वर्ण ॲरे आहे ज्यामध्ये एक वर्ण (अक्षर x) आणि "\0" आहे.

चल आणि त्यांचे वर्णन.

C मध्ये, कोणतेही व्हेरिएबल वापरण्यापूर्वी ते घोषित करणे आवश्यक आहे; सामान्यतः, सर्व व्हेरिएबल्स फंक्शनच्या सुरुवातीला, प्रथम सूचना अंमलात आणण्यापूर्वी घोषित केल्या जातात. घोषणा व्हेरिएबल्सच्या गुणधर्मांचे वर्णन करते. यात प्रकाराचे नाव आणि चलांची सूची असते, उदाहरणार्थ:

int fahr, सेल्सियस;

int खालचा, वरचा, पायरी;

त्याच्या घोषणेमध्ये, एक व्हेरिएबल आरंभ केले जाऊ शकते, जसे की:

char esc = "\\" ;

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

const double e = 2.71828182845905;

const char msg = "चेतावणी:";

ॲरेवर लागू केल्यावर, कॉन्स्ट क्वालिफायर सूचित करतो की त्यातील कोणतेही घटक बदलणार नाहीत. फंक्शन ॲरेमध्ये बदल करत नाही हे दर्शविण्यासाठी कॉन्स्ट हिंट ॲरे वितर्कवर देखील लागू केली जाऊ शकते:

int strlen(const char);

कॉन्स्ट क्वालिफायरसह चिन्हांकित व्हेरिएबलमध्ये बदल करण्याच्या प्रयत्नाला मिळणारा प्रतिसाद कंपाइलर अंमलबजावणीवर अवलंबून असतो.

सी मध्ये युनरी ऑपरेशन्स.

इंक्रीमेंट ऑपरेटर ++ त्याच्या ऑपरेंडमध्ये 1 जोडतो आणि डिक्रिमेंट ऑपरेटर -- 1 वजा करतो. ++ आणि -- ऑपरेटर्सची असामान्य गोष्ट म्हणजे ते दोन्ही उपसर्ग म्हणून वापरले जाऊ शकतात (व्हेरिएबलच्या समोर ठेवून: + +n) आणि पोस्टफिक्स म्हणून (व्हेरिएबलच्या नंतर ठेवून: n++) ऑपरेटर. दोन्ही प्रकरणांमध्ये, n चे मूल्य 1 ने वाढवले ​​जाते, परंतु अभिव्यक्ती ++n हे मूल्य वापरण्यापूर्वी n वाढते आणि ते वापरल्यानंतर n++.

बिटवाइज ऑपरेशन्ससी मध्ये.

C मध्ये बिट्स हाताळण्यासाठी सहा ऑपरेटर आहेत. ते फक्त पूर्णांक ऑपरेंडवर लागू केले जाऊ शकतात, म्हणजे ऑपरेंडवर char प्रकार, लहान, इंट आणि लांब, स्वाक्षरी केलेले आणि स्वाक्षरी केलेले नाही.

& - bitwise AND.

| - bitwise OR.

^ - bitwise exclusive OR.<< - сдвиг влево.

>> - उजवीकडे शिफ्ट करा.

~ - bitwise negation (unary).

& operator (bitwise AND) चा वापर अनेकदा बिट्सच्या गटाला शून्यावर रीसेट करण्यासाठी केला जातो. उदाहरणार्थ,

n = n & 0177 सर्वात कमी सात वगळता सर्व बिट n मध्ये रीसेट करते.

ऑपरेटर | (bitwise OR) बिट सेट करण्यासाठी वापरले जाते; तर, x = x! SET_ON x च्या त्या बिट्समध्ये युनिट्स सेट करते जे SET_ON मधील युनिट्सशी संबंधित आहेत.

बिटवाइज ऑपरेटर आणि आणि | पासून वेगळे केले पाहिजे तार्किक ऑपरेटर&& आणि ||, ज्याचे डावीकडून उजवीकडे मूल्यमापन केल्यावर सत्य मूल्य निर्माण होते. उदाहरणार्थ, जर x 1 असेल आणि y 2 असेल, तर x & y शून्य देईल आणि x && y एक देईल.

^ (bitwise exclusive OR) ऑपरेटर प्रत्येक बिट 1 वर सेट करेल जर ऑपरेंडच्या संबंधित बिट्सची मूल्ये भिन्न असतील आणि 0 समान असतील.

ऑपरेटर्स<< и >> उजव्या ऑपरेंडने निर्दिष्ट केलेल्या बिट पोझिशन्सच्या संख्येनुसार त्याचे डावे ऑपरेंड डावीकडे किंवा उजवीकडे हलवा, जे नकारात्मक नसावे. होय, एक्स<< 2 сдвигает значение х влево на 2 позиции, заполняя освобождающиеся биты нулями, что эквивалентно умножению х на 4. Сдвиг вправо беззнаковой величины всегда сопровождается заполнением освобождающихся разрядов нулями. Сдвиг вправо знаковой величины на одних машинах происходит с распространением знака ("арифметический сдвиг"), на других - с заполнением освобождающихся разрядов нулями ("логический сдвиг").

युनरी ऑपरेटर ~ पूर्णांक बिटवाईज “उलटतो”, म्हणजे, तो प्रत्येक बिटला शून्य बिटमध्ये बदलतो आणि त्याउलट. उदाहरणार्थ, x = x & ~077 x मधील शेवटचे 6 अंक रीसेट करते.

C मधील सशर्त विधाने.

सशर्त जर विधान

वाक्यरचना:

अ) लहान केलेला फॉर्म

जर (<выр>) <оператор1>;

ब) पूर्ण फॉर्म

जर (<выр>) <оператор1>;

इतर<оператор2>;

अभिव्यक्ती<выр>अंकगणित, तार्किक किंवा संबंधात्मक असू शकते. जर मूल्य<выр>शून्याच्या बरोबरीचे नाही, नंतर ते कार्यान्वित केले जाते<оператор1>.

पूर्ण स्वरूपात जर<выр>शून्य, नंतर<оператор2>.

सशर्त तिहेरी ऑपरेशन (? :)

वाक्यरचना:

<выр1> ? <выр2> : <выр3>;

मूल्य प्रथम मोजले जाते<выр1>.

जर ते शून्य (सत्य) नसेल तर मूल्य मोजले जाते<выр2>. अर्थ<выр3>गणना केली नाही.

जर मूल्य<выр1>शून्य (असत्य) आहे, नंतर मूल्य मोजले जाते<выр3>. मूल्य मोजत आहे<выр2>निर्मिती होत नाही.

चिन्ह = x<0 ? -1: 1;

35. स्विच ऑपरेटर.

स्विचेस

वाक्यरचना:

स्विच(<выр>)

केस<константа_1> : <операторы_1>;

केस<константа_2> : <операторы_2>;

केस<константа_L> : <операторы_L>;

डीफॉल्ट:<операторы>;

स्विच प्रविष्ट करताना, मूल्य मोजले जाते<выр>. जर ते एका स्थिरांकाशी जुळत असेल, तर संबंधित केस शाखेत नमूद केलेली विधाने अंमलात आणली जातात. उदाहरणार्थ, जर<выр>==<константа_L>, मग ते पूर्ण होतात<операторы_L>.

जर मूल्य<выр>कोणत्याही स्थिरांकाशी जुळत नाही, नंतर डीफॉल्ट नंतर निर्दिष्ट केलेले ऑपरेटर कार्यान्वित केले जातात.

एक्झिक्युटींग ब्रँचच्या ऑपरेटर्समध्ये ट्रान्झिशन ऑपरेटर (ब्रेक, गोटो, रिटर्न, एक्झिट()) नसल्यास, पुढील शाखेचे ऑपरेटर अंमलात आणले जातात.

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

डीफॉल्ट शाखा स्विच शाखांच्या गटामध्ये कुठेही स्थित असू शकते.

स्विच (ऑपरेंड) (

केस गुणाकार: x *= y; खंडित;

केस डिव्हाइड: x /= y; खंडित;

केस ADD: x += y; खंडित;

केस SUBTRACT: x -= y; खंडित;

केस इंक्रीमेंट2: x++;

केस इंक्रीमेंट1: x++; खंडित;

केस MOD: printf("झाले नाही\n"); खंडित;

डीफॉल्ट: printf("बग!\n");

operand == MULTIPLY असल्यास, x *= y कार्यान्वित केले जाईल; आणि स्विच प्रक्रिया (आणि प्रोग्राम अंमलबजावणी) समाप्त होईल.

ऑपरेंड == INCREMENT2 असल्यास, x++ कार्यान्वित केले जाईल; x++; आणि स्विच प्रक्रिया पूर्ण होईल.

जर ऑपरेंड EXPONENT, ROOT किंवा MOD असेल, तर printf("न झाले\n"); खंडित;

36. सी मध्ये लूप ऑपरेटर.

लूपसाठी पॅरामेट्रिक

वाक्यरचना:

साठी ([<выр1>]; [<выр2>]; [<выр3>]) <оператор>;

<оператор>पर्यंत पुनरावृत्ती होते<выр2>मूल्य 0 ("असत्य") स्वीकारणार नाही.

लूपच्या पहिल्या पुनरावृत्तीपूर्वी, मूल्य मोजले जाते<выр1>. सामान्यतः हे लूप काउंटर सुरू करण्यासाठी वापरले जाते. मग मूल्य मोजले जाते<выр2>.

प्रत्येक पुनरावृत्तीनंतर मूल्य मोजले जाते<выр3>. हे सहसा लूप काउंटर वाढविण्यासाठी वापरले जाते. मग मूल्य मोजले जाते<выр2>.

<выр1>आणि<выр3>स्वल्पविरामाने विभक्त केलेल्या अनेक अभिव्यक्ती असू शकतात.

सर्व लूप हेडर पॅरामीटर्स वैकल्पिक आहेत, परंतु दोन्ही ';' परिसीमक उपस्थित असणे आवश्यक आहे. म्हणजेच, फॉर्म स्वीकार्य आहेत

साठी(<выр1>;;) <оператор>;

साठी(;<выр2>;) <оператор>;

साठी(;;<выр3>) <оператор>;

साठी(<выр1>;;<выр3>) <оператор>;

गहाळ असल्यास<выр2>, नंतर त्याचे मूल्य 1 ("सत्य") च्या समान मानले जाते.

पूर्वस्थिती असताना लूप

वाक्यरचना:

तेव्हा (<выр>) <оператор>;

<оператор> <выр> <выр>प्रत्येक पुनरावृत्तीच्या आधी गणना केली जाते.

do सह लूप ... तर postcondition

वाक्यरचना:

करा<оператор>तेव्हा (<выр>);

<оператор>मूल्यापर्यंत पुन्हा कार्यान्वित केले<выр>शून्य न राहते. अर्थ<выр>प्रत्येक पुनरावृत्तीनंतर गणना केली जाते.

फंक्शन्सची रचना.

39. सी प्रोग्रामची रचना. चरांचे प्रकार.

void main() /* मुख्य कार्यक्रम */

int x,y,z; /* पूर्णांक प्रकाराच्या चलांची घोषणा */

x=5; y=6; /* असाइनमेंट ऑपरेटर */

printf("sum=%d\n",z); /* लायब्ररीमधून आउटपुट करण्यासाठी मानक कार्य. */

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

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

पूर्णांक प्रकारांमध्ये इंट, शॉर्ट (शॉर्ट इंट) आणि लाँग सारख्या प्रकारांचा समावेश होतो. int प्रकारातील व्हेरिएबल्स मेमरीमध्ये 32 बिट व्यापतात. नावाप्रमाणे शॉर्ट व्हेरिएबल्स दुप्पट "लहान" आहेत. ते 16 बिट मेमरी व्यापतात. लांबीचे व्हेरिएबल्स, अनुक्रमे, दुप्पट लांब असतात आणि मेमरीमध्ये 64 बिट व्यापतात.

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

फ्रॅक्शनल प्रकारांमध्ये अनुक्रमे फ्लोट आणि दुहेरी - एकल आणि दुहेरी अचूक अपूर्णांक संख्या समाविष्ट आहेत. पहिल्या प्रकारातील व्हेरिएबल्स मेमरीमध्ये 32 बिट व्यापतात, दुसरा प्रकार - 64.

फक्त एक तार्किक प्रकार आहे, आणि त्याला bool म्हणतात. नावाप्रमाणेच, हा प्रकार तार्किक मूल्ये "सत्य" (सत्य) किंवा "असत्य" (असत्य) संग्रहित करण्यासाठी डिझाइन केला आहे.

वर्ण प्रकार देखील एकच आहे. याला चार म्हणतात आणि एक वर्ण संग्रहित करू शकतो, अधिक अचूकपणे, त्याची संख्या ASCII एन्कोडिंगमध्ये, या संदर्भात हा प्रकार पूर्णांक प्रकारांच्या जवळ आहे. वर्ण प्रकाराच्या मूल्यांची श्रेणी -128 ते 127 पर्यंत पूर्णांक आहे (अस्वाक्षरित वर्णासाठी 0 ते 255 पर्यंत), म्हणजे, लॅटिन आणि राष्ट्रीय अक्षरांचे सर्व वर्ण, संख्या, विरामचिन्हे आणि विशेष वर्ण जसे की लाइन ब्रेक , इ. हे लक्षात ठेवले पाहिजे की C++ मधील एकल वर्ण अपोस्ट्रॉफीमध्ये संलग्न आहेत.

एक वेगळा प्रकार म्हणून स्ट्रिंग्स फक्त नियमित C मध्ये दिसल्या, स्ट्रिंग्स अक्षरशः अक्षरांचे ॲरे होते आणि त्यांच्यासोबत काम करणे अनेक प्रकारे ॲरेसोबत काम करण्यासारखेच होते.

पत्ता अंकगणित.

भिन्न असू शकते:

प्रकार int चा परिणाम*

पॉइंटर्स आणि कार्ये.

विभाग २.२ मध्ये पॉइंटर आणि डायनॅमिक मेमरी वाटप थोडक्यात सादर केले गेले.

पॉइंटर एक ऑब्जेक्ट आहे ज्यामध्ये दुसर्या ऑब्जेक्टचा पत्ता असतो आणि अप्रत्यक्ष परवानगी देतो

हे ऑब्जेक्ट हाताळा. सामान्यत: पॉइंटर्ससह कार्य करण्यासाठी वापरले जातात

संबंधित डेटा स्ट्रक्चर्स तयार करण्यासाठी डायनॅमिकली तयार केलेल्या ऑब्जेक्ट्स, जसे की

लिंक केलेल्या याद्या आणि श्रेणीबद्ध झाडे म्हणून, आणि मोठ्या पासिंगसाठी

ऑब्जेक्ट्स – ॲरे आणि क्लास ऑब्जेक्ट्स – पॅरामीटर्स म्हणून.

प्रत्येक पॉइंटर काही डेटा प्रकार आणि त्यांच्या अंतर्गत संबंधित आहे

प्रतिनिधित्व अंतर्गत प्रकारापासून स्वतंत्र आहे: आणि ऑब्जेक्टद्वारे व्यापलेल्या मेमरीचा आकार

पॉइंटर टाइप करा, आणि त्यांच्या मूल्यांची श्रेणी समान आहे5. फरक कसा आहे

संकलक संबोधित ऑब्जेक्ट ओळखतो. वेगवेगळ्या प्रकारचे पॉइंटर असू शकतात

समान मूल्य, परंतु मेमरी क्षेत्र जेथे संबंधित प्रकार स्थित आहेत,

भिन्न असू शकते:

मेमरी 1000-1003 (32-बिट सिस्टममध्ये);

मेमरी 1000-1007 (32-बिट सिस्टममध्ये).

जेव्हा आपण int प्रकारच्या ऑब्जेक्टवर ॲड्रेस ऑपरेटर (&) लागू करतो तेव्हा आपल्याला मिळते

प्रकार int चा परिणाम*

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

इनपुट/आउटपुट स्वरूपित करा.

दोन कार्ये: आउटपुटसाठी प्रिंटएफ आणि इनपुटसाठी स्कॅनफ (पुढील विभाग) तुम्हाला संख्यात्मक मूल्ये रूपांतरित करण्याची परवानगी देतात.

प्रतिकात्मक प्रतिनिधित्व आणि परत. ते फॉरमॅट स्ट्रिंग्स व्युत्पन्न आणि अर्थ लावण्याची परवानगी देतात. कार्य

printf(नियंत्रण, arg1, arg2, ...)

कंट्रोल लाइन आणि प्रिंट्समध्ये निर्दिष्ट केलेल्या फॉरमॅट्सनुसार युक्तिवादांना मजकूर स्वरूपात रूपांतरित करते

मानक आउटपुटचा परिणाम. कंट्रोल स्ट्रिंगमध्ये दोन प्रकारच्या ऑब्जेक्ट्स असतात: सामान्य अक्षरे, जी फक्त कॉपी केली जातात

आउटपुट स्ट्रीमवर पाठवले जातात आणि रूपांतरण तपशील, ज्यापैकी प्रत्येक पुढील युक्तिवाद रूपांतरित आणि मुद्रित होण्यास कारणीभूत ठरतो.

ment printf.

प्रत्येक रूपांतरण तपशील "%" वर्णाने सुरू होतो आणि रूपांतरण वर्णाने समाप्त होतो (व्याख्या करणारे अक्षर

परिवर्तनाचा प्रकार परिभाषित करणे). "%" आणि रूपांतरण चिन्हादरम्यान असू शकते:

एक वजा चिन्ह ज्यामुळे रूपांतरित युक्तिवाद फील्डच्या डाव्या काठावर संरेखित केला जातो.

फील्डची किमान रुंदी निर्दिष्ट करणारी संख्यांची स्ट्रिंग. रूपांतरित संख्या कमीतकमी या रुंदीच्या फील्डमध्ये आणि आवश्यक असल्यास विस्तृत फील्डमध्ये मुद्रित केली जाईल. रूपांतरित युक्तिवादामध्ये निर्दिष्ट फील्ड रुंदीपेक्षा कमी वर्ण असल्यास, ते त्या रुंदीपर्यंत पॅडिंग वर्णांसह डावीकडे पॅड केले जाईल (किंवा डावीकडे न्याय्य निर्दिष्ट केले असल्यास उजवीकडे). पॅडिंग कॅरेक्टर हे सहसा स्पेस असते आणि जर फील्डची रुंदी अग्रगण्य शून्यासह निर्दिष्ट केली असेल, तर ते कॅरेक्टर शून्य असेल (या प्रकरणात अग्रगण्य शून्याचा अर्थ फील्डची अष्टक रूंदी नाही).

फील्डची रुंदी संख्यांच्या पुढील ओळीपासून विभक्त करणारा बिंदू.

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

लांबी सुधारक l, जे सूचित करते की संबंधित डेटा घटक int ऐवजी लांब प्रकारचा आहे.

scanf फंक्शन जे इनपुट करते ते printf सारखे असते आणि तुम्हाला उलट दिशेने अनेक गोष्टी करण्याची परवानगी देते.

त्याच परिवर्तनांमधून. scanf(control, arg1, arg2, ...) फंक्शन मानक इनपुटमधील अक्षरे वाचते, नियंत्रण युक्तिवादात निर्दिष्ट केलेल्या स्वरूपानुसार त्यांचा अर्थ लावते आणि उर्वरित वितर्कांमध्ये निकाल ठेवते. नियंत्रण रेषा खाली वर्णन केली आहे; इतर युक्तिवाद, ज्यापैकी प्रत्येक पॉइंटर असणे आवश्यक आहे, योग्यरित्या रूपांतरित इनपुट कोठे ठेवायचे ते निर्दिष्ट करा.

नियंत्रण स्ट्रिंगमध्ये सहसा रूपांतरण तपशील असतात ज्याचा वापर थेट अर्थ लावण्यासाठी केला जातो

इनपुट क्रम मागे घेणे. नियंत्रण रेषेत हे समाविष्ट असू शकते:

जागा, टॅब किंवा नवीन रेषा (“रिक्त”) ज्याकडे दुर्लक्ष केले जाते;

नियमित वर्ण (% नाही), जे इनपुट प्रवाहातील खालील नॉन-व्हाइटस्पेस वर्णांशी जुळतील असे गृहीत धरले जाते;

% वर्ण, पर्यायी असाइनमेंट सप्रेशन कॅरेक्टर *, जास्तीत जास्त फील्ड रुंदी निर्दिष्ट करणारी पर्यायी संख्या आणि रूपांतरण वर्ण असलेले रूपांतरण तपशील.

48.रेषाअक्षरांचा एक क्रम आहे ज्याला एक घटक मानले जाते. स्ट्रिंगमध्ये अक्षरे, संख्या आणि विविध विशेष वर्ण असू शकतात.

SI मध्ये स्ट्रिंग ही कॅरेक्टर्सची ॲरे आहे जी नल कॅरेक्टरने संपते ('\0') स्ट्रिंगला पॉइंटरद्वारे ऍक्सेस केले जाते जे स्ट्रिंगचे पहिले ॲड्रेस असते अशाप्रकारे, SI मध्ये स्ट्रिंग हे पॉइंटर आहे असे म्हणणे योग्य आहे, स्ट्रिंगच्या पहिल्या कॅरेक्टरचे पॉइंटर एकतर वर्णांच्या ॲरेला किंवा व्हेरिएबलमध्ये दिले जाऊ शकते चार*.

रचना.

आधुनिक प्रोग्रामिंग भाषांमध्ये, एक विशेष डेटा प्रकार आहे जो करू शकतो

सोप्या (आणि भिन्न!) प्रकारच्या अनेक घटकांचा समावेश असू शकतो.

रचना हा एक डेटा प्रकार आहे ज्यामध्ये अनेक फील्ड - घटक समाविष्ट असू शकतात

विविध प्रकार (इतर रचनांसह).

स्ट्रक्चर्सचा एक उपयोग म्हणजे विविध डेटाबेस, याद्या इत्यादींचे आयोजन करणे.

स्ट्रक्चर हा नवीन डेटा प्रकार असल्याने, तो प्रथम सुरुवातीला घोषित करणे आवश्यक आहे

char शीर्षक; // नाव, वर्ण स्ट्रिंग

int वर्ष; // प्रकाशनाचे वर्ष, पूर्णांक

int पृष्ठे; // पृष्ठांची संख्या, पूर्णांक

संपूर्ण संरचनेचा संदर्भ देण्यासाठी, त्याचे नाव वापरा आणि एखाद्या व्यक्तीचा संदर्भ घ्या

या फील्डचे नाव एका बिंदूने वेगळे केले आहे. नुसार रचना घटक अनुक्रमे सादर केले जातात

एकटा आपण ते कोणत्याही क्रमाने भरू शकता. आपण स्ट्रक्चर फील्डसह त्याच प्रकारे कार्य करू शकता

आणि योग्य प्रकारच्या व्हेरिएबलसह: संख्यात्मक चल अंकगणितात भाग घेऊ शकतात

तार्किक अभिव्यक्तीमध्ये, तुम्ही स्ट्रिंगवर सर्व मानक ऑपरेशन्स करू शकता.

strcpy(b.author, "A.S. पुष्किन");

स्ट्रक्चर्स मोठ्या प्रमाणावर माहितीवर प्रक्रिया करतात, त्यामुळे बहुतेकदा

प्रोग्राम स्ट्रक्चर्सच्या ॲरेचा वापर करतो. ते नेहमीप्रमाणेच जाहीर केले जातात, परंतु प्रथम

मूलत: (वर) तुम्हाला स्ट्रक्चर स्वतःच नवीन डेटा प्रकार म्हणून घोषित करणे आवश्यक आहे.

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

कंसात इच्छित संरचनेची संख्या देखील आहे, उदाहरणार्थ

साठी (i = 0; i< 20; i ++) // цикл по всем структурам в массива

puts(A[i].title); // पुस्तकाचे शीर्षक प्रदर्शित करा

संरचना, इतर कोणत्याही प्रकारांप्रमाणेच, कार्ये आणि कार्यपद्धतींचे मापदंड असू शकतात.

फाइल्ससह कार्य करणे.

फायली मजकूर फायली असू शकतात (ज्यामध्ये तुम्ही फक्त अक्षरे, संख्या, कंस आणि

इ.) आणि बायनरी (जे टेबलमधील कोणतेही वर्ण संग्रहित करू शकतात).

मजकूर फायली

(रेखीय ॲरे प्रमाणेच) फाइलमध्ये गहाळ किंवा अपुरा डेटाच्या त्रुटी.

बायनरी फाइल्स

जेव्हा डेटा लिहिला जातो (किंवा वाचला जाईल) तेव्हा बायनरी फाइलसह कार्य करणे सोयीचे असते.

दुसरा प्रोग्राम आणि ते व्यक्तिचलितपणे पाहण्याची आवश्यकता नाही. या पद्धतीचा मुख्य फायदा म्हणजे वाचन आणि लेखनाचा वेग, कारण संपूर्ण ॲरे एकाच वेळी एकाच ब्लॉकच्या रूपात वाचले (किंवा लिहिलेले) आहे.

फाइल्ससह कार्य करण्यासाठी फंक्शन्सचे वर्णन stdio.h लायब्ररीमध्ये आहे

प्रथम तुम्हाला FILE (FILE* file;) प्रकारच्या व्हेरिएबलसाठी पॉइंटर तयार करणे आवश्यक आहे.

फॉपेन फंक्शन (फाइल = फॉपेन(फाइल_नाव, "w");) कॉल करून फाइल उघडली जाते.

या फंक्शनचे पहिले पॅरामीटर फाइलचे नाव आहे, दुसरा फाइल कोणत्या मोडमध्ये उघडली पाहिजे हे निर्दिष्ट करते. "w" - लेखनासाठी उघडा, "r" - वाचनासाठी उघडा, "a" - फाईल संलग्न करा (हे सर्वात जास्त वापरलेले मोड आहेत, जरी इतर आहेत). फाइलमधून डेटा लिहिणे आणि वाचणे खालील फंक्शन्सद्वारे केले जाते: fputc, fputs, fgetc, fgets, fprintf, fscanf (या फंक्शन्सच्या वर्णनासाठी, stdio.h पहा).

फाइल बंद करणे fclose फंक्शन (fclose(file);) कॉल करून केले जाते.

I/O

सी भाषा स्वतःच कोणतीही इनपुट/आउटपुट क्षमता प्रदान करत नाही. या सर्व उच्च-स्तरीय यंत्रणा स्पष्टपणे कॉल करण्यायोग्य कार्यांद्वारे प्रदान केल्या पाहिजेत.

आउटपुट कार्ये:

Int putchar(int c). एक वर्ण stdout वर ठेवा

इंट fputs(int c,FILE *f). फाइल f मध्ये एक वर्ण आउटपुट करतो

इंट पुट्स(char*s). स्ट्रिंग s ला कोड 0 सह स्टँडर्ड आऊटपुट पर्यंत ठेवते आणि शेवटी नवीन ओळ मुद्रित करते

इंट fputs(char*s,FILE*f). फाईल f मध्ये कोडसह स्ट्रिंग s ला ट्रेलिंग कॅरेक्टर पर्यंत आउटपुट करते.

Int printf() प्रमाणित आउटपुटमध्ये मजकूर मुद्रित करते.

स्वरूप वर्णन % चिन्हाने सुरू होते

%d एक स्वाक्षरी पूर्णांक आहे

%u - स्वाक्षरी न केलेला पूर्णांक

%f ही खरी संख्या आहे

%s-वर्ण

इनपुट कार्ये:

इंट getchar(void).stdin मधील एक वर्ण वाचतो

इंट fgetc(FILE *f). फाइल f मधील एक वर्ण वाचतो

Char *fgets(char*s,int size,FILE*f). फाईल f मधून जास्तीत जास्त आकाराच्या वर्णांची ओळ वाचते, ज्यामध्ये ओळीच्या शेवटच्या अक्षराचा समावेश होतो आणि पत्त्यावर ठेवतो.

Int scanf() निर्दिष्ट फॉरमॅटनुसार मानक इनपुटमधून डेटा वाचतो

24 सी भाषा डेटा प्रकार.

C मध्ये विविध आकारांच्या पूर्णांकांचे प्रकार आहेत, स्वाक्षरी केलेले आणि स्वाक्षरी न केलेले, फ्लोटिंग पॉइंट, वर्ण, enums आणि स्ट्रक्चर्स. याव्यतिरिक्त, सी भाषा एक युनियन प्रकार ऑफर करते, ज्याद्वारे तुम्ही एकतर एकाच मेमरी स्थानामध्ये विषम डेटा संचयित करू शकता जे आयुष्यभर ओव्हरलॅप होत नाही (हे तुम्हाला मेमरी जतन करण्यास अनुमती देते), किंवा मेमरी क्षेत्राच्या सामग्रीमध्ये भिन्न डेटा म्हणून प्रवेश करू शकता. प्रकार (जे तुम्हाला डेटा न बदलता डेटा प्रकार व्याख्या बदलण्याची परवानगी देते).

C मध्ये अनेक मूलभूत प्रकार आहेत:

char - सिंगल बाइट, वैध वर्ण संचातून एक वर्ण असू शकतो;

int एक पूर्णांक आहे, सामान्यत: मशीनच्या पूर्णांकांचे नैसर्गिक प्रतिनिधित्व दर्शवते;

फ्लोट - एकल अचूक फ्लोटिंग पॉइंट नंबर;

दुहेरी - दुहेरी अचूक फ्लोटिंग पॉइंट नंबर.

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

लांब इंट काउंटर;

अशा घोषणांमध्ये, int हा शब्द वगळला जाऊ शकतो, जो सहसा केला जातो.

स्वाक्षरी केलेले किंवा स्वाक्षरी न केलेले पात्रता चार प्रकार आणि कोणत्याही अविभाज्य प्रकारासाठी लागू केले जाऊ शकतात. स्वाक्षरी न केलेली मूल्ये नेहमी सकारात्मक किंवा शून्य असतात आणि मॉड्युलो 2n अंकगणिताच्या नियमांचे पालन करतात, जेथे n प्रकार प्रस्तुतीकरणातील बिट्सची संख्या असते. तर, जर चार मूल्यामध्ये 8 बिट असतील, तर स्वाक्षरी न केलेल्या चारमध्ये 0 ते 255 पर्यंत मूल्ये आहेत आणि स्वाक्षरी केलेल्या चारमध्ये -128 ते 127 पर्यंत (बायनरी मशीनमध्ये) मूल्ये आहेत.

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

लांब दुहेरी प्रकार उच्च-सुस्पष्टता फ्लोटिंग-पॉइंट अंकगणितासाठी आहे. पूर्णांकांप्रमाणे, फ्लोटिंग-पॉइंट ऑब्जेक्ट्सचे आकार अंमलबजावणीवर अवलंबून असतात; फ्लोट, दुहेरी आणि लांब डबल कॅन

एक आकार दिसू शकतो, किंवा दोन किंवा तीन भिन्न आकार असू शकतात.

अंकगणित स्थिरांक.

पूर्णांक स्थिरांक, जसे की १२३४, इंट प्रकाराचा असतो. दीर्घ स्थिरांक l किंवा L या अक्षराने संपतो, उदाहरणार्थ 123456789L; एक पूर्णांक जो इंट म्हणून दर्शविण्यासाठी खूप मोठा आहे तो दीर्घ म्हणून दर्शविला जाईल.

सही न केलेले स्थिरांक u किंवा U अक्षराने संपतात आणि शेवटचा ul किंवा UL दर्शवितो की स्थिरांकाचा प्रकार अस्वाक्षरित लांब आहे. फ्लोटिंग-पॉइंट स्थिरांकांमध्ये दशांश बिंदू (123.4), किंवा घातांकीय भाग (1e-2), किंवा दोन्ही असतात. जर त्यांना शेवट नसेल तर ते दुहेरी प्रकाराचे मानले जातात. शेवटचा f किंवा F फ्लोट प्रकार दर्शवतो आणि 1 किंवा L लांब दुहेरी प्रकार दर्शवतो.

दशांश व्यतिरिक्त, पूर्णांक मूल्यामध्ये ऑक्टल किंवा हेक्साडेसिमल प्रतिनिधित्व असू शकते. जर स्थिरांक शून्यापासून सुरू होत असेल, तर ते 0x किंवा 0X पासून सुरू होत असेल, तर ते हेक्साडेसिमलमध्ये दर्शविले जाते. उदाहरणार्थ, दशांश पूर्णांक 31 हे 037 किंवा 0X1F असे लिहिले जाऊ शकते. ऑक्टल आणि हेक्साडेसिमल स्थिरांकांना L (प्रकार लांब आहे हे दर्शवण्यासाठी) आणि U (स्थिरांक अस्वाक्षरित आहे हे दर्शविण्यासाठी) सह समाप्त केले जाऊ शकते. उदाहरणार्थ, स्थिर 0XFUL चे मूल्य 15 आहे आणि प्रकार स्वाक्षरी नसलेला लांब आहे.

वर्ण आणि स्ट्रिंग स्थिरांक.

अक्षर स्थिरांक म्हणजे "x" सारख्या एकल अवतरणांनी वेढलेले वर्ण म्हणून लिहिलेले पूर्णांक. वर्ण स्थिरांकाचे मूल्य हे दिलेल्या मशीनवरील वर्ण संचातील वर्णाचा अंकीय कोड आहे. उदाहरणार्थ, ASCII अक्षर स्थिरांक "0" चे मूल्य 48 आहे, ज्याचा अंकीय मूल्य 0 शी काहीही संबंध नाही. जेव्हा आपण काही मूल्याऐवजी "0" लिहितो (उदाहरणार्थ 48), एन्कोडिंग पद्धतीवर अवलंबून, आम्ही प्रोग्रामला कोडच्या खाजगी अर्थापासून स्वतंत्र करतो आणि ते वाचणे देखील सोपे आहे. अक्षर स्थिरांक इतर पूर्णांकांप्रमाणेच संख्या ऑपरेशनमध्ये वापरले जाऊ शकतात, जरी त्यांचा वापर इतर वर्णांशी तुलना करण्यासाठी केला जातो.

वर्ण आणि स्ट्रिंग स्थिरांकांमधील काही वर्ण एस्केप सीक्वेन्स वापरून लिहिलेले असतात, जसे की \n (नवीन रेखा); असे क्रम दोन चिन्हांद्वारे दर्शविले जातात, परंतु एक दर्शवितात.

याव्यतिरिक्त, एक अनियंत्रित ऑक्टल कोड "\ooo" म्हणून निर्दिष्ट केला जाऊ शकतो, जेथे ooo एक, दोन किंवा तीन ऑक्टल अंक (0...7) किंवा "\xhh", जेथे hh एक, दोन किंवा अधिक हेक्साडेसिमल अंक ( 0 ...9, a...f, A...F). त्यामुळे आम्ही लिहू शकलो

#VTAB "013" /* ASCII मध्ये उभा टॅब परिभाषित करा */

#बेल परिभाषित करा "\007" /* ASCII ला कॉल करा */

किंवा हेक्साडेसिमलमध्ये:

# ASCII मध्ये VTAB "\xb" /* अनुलंब टॅब परिभाषित करा */

#बेल "\x7" परिभाषित करा /* ASCII ला कॉल करा */

एस्केप सिक्वेन्सचा संपूर्ण संच खालीलप्रमाणे आहे:

\a बेल सिग्नल

\\ बॅकस्लॅश

\b पायरीवर परत (डाउनहोल)

\f पृष्ठ फीड

\n नवीन ओळ

\r कॅरेज रिटर्न

\t क्षैतिज टॅब \v उभ्या-टॅब

\? प्रश्नचिन्ह

\" एकल कोट

\" दुहेरी कोट

\ooo ऑक्टल कोड

\xhh हेक्साडेसिमल कोड

अक्षर स्थिरांक "\0" हे शून्य मूल्य असलेले वर्ण आहे, तथाकथित शून्य वर्ण. फक्त 0 ऐवजी, "\0" ही नोटेशन अनेकदा अभिव्यक्तीच्या प्रतीकात्मक स्वरूपावर जोर देण्यासाठी वापरली जाते, जरी दोन्ही प्रकरणांमध्ये नोटेशन शून्य दर्शवते.

स्ट्रिंग स्थिरांक, किंवा स्ट्रिंग लिटरल, दुहेरी अवतरणांमध्ये बंद केलेले शून्य किंवा अधिक वर्ण आहेत, जसे की "मी एक स्ट्रिंग स्थिरांक आहे" किंवा "" (रिक्त स्ट्रिंग).

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

हे गुणधर्म तुम्हाला लांब रेषा भागांमध्ये तोडण्याची आणि हे भाग स्वतंत्र रेषांवर ठेवण्याची परवानगी देते.

खरं तर, स्ट्रिंग कॉन्स्टंट हा वर्णांचा ॲरे आहे. स्ट्रिंगच्या अंतर्गत प्रतिनिधित्वासाठी अनुगामी शून्य वर्ण "\0" आवश्यक आहे, म्हणून स्ट्रिंगला दुहेरी अवतरणांमधील वर्णांच्या संख्येपेक्षा एक बाइट अधिक मेमरी आवश्यक आहे. याचा अर्थ असा की तुम्ही निर्दिष्ट केलेल्या स्ट्रिंगच्या लांबीला मर्यादा नाही, परंतु त्याची लांबी निश्चित करण्यासाठी तुम्ही संपूर्ण स्ट्रिंग स्कॅन करणे आवश्यक आहे.

स्थिरांक हा भाषेच्या वर्णमालेतील वर्णांचा मर्यादित क्रम असतो, जो एका स्थिर (अपरिवर्तनीय) वस्तूची प्रतिमा असते.

स्थिरांक संख्यात्मक, वर्ण आणि स्ट्रिंग असू शकतात. संख्यात्मक स्थिरांक पूर्णांक आणि वास्तविक मध्ये विभागलेले आहेत.

पूर्णांक स्थिरांक

C मधील पूर्णांक डेटा खालीलपैकी एका संख्या प्रणालीमध्ये दर्शविला जाऊ शकतो:


बायनरी डेटा प्रतिनिधित्व प्रणाली सी भाषेत थेट समर्थित नाही. तथापि, तुम्ही binary.h ही फाइल वापरू शकता, जी बायनरी स्थिरांक एका बाइटमध्ये परिभाषित करते.

सी भाषेत बायनरी संख्या प्रणाली वापरण्याचे उदाहरण:

1
2
3
4
5
6
7
8
9

#समाविष्ट करा
# "binary.h" समाविष्ट करा
इंट मुख्य()
{
स्वाक्षरी नसलेले चार p = b10001001 | b00001010; // p=b10001011=139
printf("p = %dd = %xh" , p, p);
getchar(); getchar();
परतावा 0;
}

अंमलबजावणी परिणाम

पूर्णांक स्थिरांकाच्या मूल्यावर अवलंबून, कंपाइलर त्याला एक प्रकार किंवा दुसरा (char, int, long int) नियुक्त करतो.

तुम्ही U (किंवा u) प्रत्यय वापरू शकता पूर्णांक स्थिरांक एक सही न केलेला पूर्णांक म्हणून दर्शवण्यासाठी.

उदाहरणार्थ, Constant 200U ला 1 बाइट वाटप केले जाते आणि सर्वात लक्षणीय बिट नंबर कोडच्या बिट्सपैकी एकाचे प्रतिनिधित्व करण्यासाठी वापरले जाते आणि मूल्यांची श्रेणी 0 ते 255 पर्यंत बनते. L (किंवा l) प्रत्यय पूर्णांक स्थिरांक 8 बाइट्स (लांब इंट) वाटप करण्यास अनुमती देतो.

कोणत्याही क्रमाने U (किंवा u) आणि L (किंवा l) प्रत्यय एकत्र वापरल्याने पूर्णांक स्थिरांक एक स्वाक्षरी न केलेला लांब इंट बनू शकतो आणि 64 बिट मेमरी व्यापू शकतो, चिन्हांकित बिट कोड बिटचे प्रतिनिधित्व करण्यासाठी वापरला जातो (त्याऐवजी चिन्ह).

वास्तविक स्थिरांक

फ्लोटिंग-पॉइंट स्थिरांक (वास्तविक स्थिरांक) नेहमी दुहेरी-परिशुद्धता फ्लोटिंग-पॉइंट क्रमांक म्हणून दर्शविला जातो, म्हणजे, दुहेरी प्रकार असतो आणि त्यात खालील भाग असतात:

  • संपूर्ण भाग हा संख्यांचा क्रम आहे;
  • ठिपके - पूर्णांक आणि अपूर्णांक भागांचे विभाजक;
  • अंशात्मक भाग - संख्यांचा क्रम;
  • घातांक चिन्ह e किंवा E;
  • घातांक पूर्णांक स्थिरांक म्हणून (साइन केले जाऊ शकते).

खालील जोड्यांपैकी कोणतीही (परंतु दोन्ही नाही) वगळली जाऊ शकते:

  • संपूर्ण किंवा अपूर्णांक भाग;
  • बिंदू किंवा चिन्ह e (E) आणि घातांक पूर्णांक स्थिरांक म्हणून.

वास्तविक स्थिरांकांची उदाहरणे

  • 3.14159
  • 2.1E5
  • .123EZ
  • 4037e-5

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

  • F (किंवा f) - साध्या वास्तविक स्थिरांकांसाठी फ्लोट,
  • दुहेरी विस्तारित अचूक वास्तविक स्थिरांकांसाठी L (किंवा l) लांब दुहेरी आहे.

उदाहरणे:

  • 3.14159F - स्थिर प्रकारचा फ्लोट, 4 बाइट व्यापत आहे;
  • 3.14L एक लांब दुहेरी स्थिरांक आहे जो 10 बाइट व्यापतो.

अक्षर स्थिरांक

वर्ण स्थिरांक एकल वर्ण आहे, उदाहरणार्थ: 'z'. ग्राफिकल प्रतिनिधित्व नसलेले नियंत्रण कोड देखील प्रतीकात्मक स्थिरांक म्हणून वापरले जाऊ शकतात. या प्रकरणात, नियंत्रण वर्ण कोड '\' (बॅकस्लॅश) वर्णाने सुरू होतो.

सामान्यतः, की दाबणे प्रविष्ट कराएकाच वेळी दोन नियंत्रण वर्ण व्युत्पन्न करते - लाइन फीड (0x0A) आणि कॅरेज रिटर्न (0x0D).

सर्व वर्ण स्थिरांक चार प्रकारचे असतात आणि मेमरीमध्ये 1 बाइट व्यापतात. प्रतीकात्मक स्थिरांकाचे मूल्य हे त्याच्या अंतर्गत कोडचे संख्यात्मक मूल्य असते.

स्ट्रिंग स्थिरांक

स्ट्रिंग स्थिरांक हा अवतरण चिन्हांमध्ये बंद केलेल्या वर्णांचा क्रम आहे, उदाहरणार्थ:

"ही स्ट्रिंग स्थिरांक आहे"

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

कंपाइलर प्रत्येक स्ट्रिंग स्थिरांकाच्या शेवटी '\0' (शून्य वर्ण) ठेवतो जेणेकरून प्रोग्राम स्ट्रिंगचा शेवट शोधू शकेल. या प्रतिनिधित्वाचा अर्थ असा आहे की स्ट्रिंग स्थिरांकाचा आकार कोणत्याही मर्यादेने मर्यादित नाही, परंतु स्ट्रिंग स्थिरांकाची लांबी निश्चित करण्यासाठी ते पूर्णपणे स्कॅन करणे आवश्यक आहे.

स्ट्रिंग कॉन्स्टंटमध्ये कॅरेक्टर असतात, ते चार प्रकारचे असते. स्ट्रिंग स्थिरांक संचयित करण्यासाठी आवश्यक असलेल्या मेमरी सेलची संख्या त्यातील वर्णांच्या संख्येपेक्षा 1 जास्त आहे (1 बाइट शून्य वर्ण संचयित करण्यासाठी वापरला जातो).

अक्षर स्थिरांक 'x' आणि एका वर्णाची स्ट्रिंग 'x' एकच गोष्ट नाही. अक्षर स्थिरांक हे अक्षर x चे संख्यात्मकरित्या प्रतिनिधित्व करण्यासाठी वापरलेले वर्ण आहे, तर स्ट्रिंग स्थिरांक 'x' मध्ये 'x' वर्ण आणि शून्य वर्ण '\0' असतो आणि मेमरी 2 बाइट व्यापते. जर प्रोग्राममधील स्ट्रिंग स्थिरांक एकामागून एक डिलिमिटरद्वारे लिहीले गेले, तर प्रोग्राम कार्यान्वित झाल्यावर ते सलग मेमरी सेलमध्ये ठेवले जातील.

    पूर्णांक स्थिरांक

    फ्लोटिंग पॉइंट स्थिरांक

    अक्षर स्थिरांक

    तार

    शून्य

    कॉन्स्ट

    बदल्या

C++ तुम्हाला मुख्य प्रकारांची मूल्ये लिहिण्याची परवानगी देतो: वर्ण स्थिरांक, पूर्णांक स्थिरांक आणि फ्लोटिंग-पॉइंट स्थिरांक. याव्यतिरिक्त, शून्य (0) कोणत्याही पॉइंटर प्रकाराचा स्थिरांक म्हणून वापरला जाऊ शकतो, आणि वर्ण स्ट्रिंग्स चार प्रकारच्या स्थिरांक आहेत. आपण प्रतीकात्मक स्थिरांक देखील निर्दिष्ट करू शकता. प्रतीकात्मक स्थिरांक हे असे नाव आहे ज्याचे मूल्य त्याच्या व्याप्तीमध्ये बदलले जाऊ शकत नाही. C++ मध्ये तीन प्रकारचे प्रतीकात्मक स्थिरांक आहेत:

    कोणत्याही प्रकारच्या कोणत्याही मूल्याला नाव दिले जाऊ शकते आणि त्याच्या वर्णनात const कीवर्ड जोडून स्थिरांक म्हणून वापरले जाऊ शकते;

    पूर्णांक स्थिरांकांचा संच गणना म्हणून परिभाषित केला जाऊ शकतो;

    कोणतेही वेक्टर किंवा फंक्शनचे नाव स्थिर असते.

पूर्णांक स्थिरांक

पूर्णांक स्थिरांक चार प्रकारात येतात: दशांश, अष्टांक, हेक्साडेसिमल आणि वर्ण स्थिरांक. दशांश बहुतेकदा वापरले जातात आणि आपण काय अपेक्षा करता त्याप्रमाणे दिसतात:

त्यांचे दशांश समतुल्य 0, 2, 63, 83 आहेत. हेक्साडेसिमल नोटेशनमध्ये, हे स्थिरांक यासारखे दिसतात:

0x00x20x3f0x53

अक्षरे a, b, c, d, e आणि f, किंवा त्यांचे अप्परकेस समतुल्य, अनुक्रमे 10, 11, 12, 13, 14 आणि 15 संख्या दर्शवण्यासाठी वापरले जातात. बिट्सचा संच रेकॉर्ड करण्यासाठी ऑक्टल आणि हेक्साडेसिमल नोटेशन्स सर्वात उपयुक्त आहेत; सामान्य संख्या व्यक्त करण्यासाठी या नोटेशन्सचा वापर केल्याने आश्चर्य होऊ शकते. उदाहरणार्थ, मशीनवर जेथे int हे बायनरी हेक्साडेसिमल पूरक म्हणून दर्शविले जाते, 0xffff ही ऋण दशांश संख्या -1 आहे; जर संपूर्ण दर्शविण्यासाठी अधिक बिट वापरले गेले तर ते 65535 होईल.

फ्लोटिंग पॉइंट स्थिरांक

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

1.23 .23 0.23 1. 1.0 1.2e10 1.23e-15

लक्षात ठेवा की फ्लोटिंग पॉइंट स्थिरांकाच्या मध्यभागी जागा असू शकत नाही. उदाहरणार्थ, 65.43 e-21 हा फ्लोटिंग पॉइंट स्थिरांक नाही, तर चार स्वतंत्र लेक्सिकल चिन्हे (टोकन्स):

65.43 e - 21

आणि वाक्यरचना त्रुटी निर्माण करेल.
जर तुम्हाला फ्लोटिंग पॉइंट स्थिर प्रकारचा फ्लोट हवा असेल तर तुम्ही ते याप्रमाणे परिभाषित करू शकता:

कॉन्स्ट फ्लोट pi = 3.14159265;

अक्षर स्थिरांक

जरी C++ मध्ये कोणताही स्वतंत्र वर्ण डेटा प्रकार नसला तरी, अधिक अचूकपणे, एक वर्ण संपूर्ण प्रकारात संग्रहित केला जाऊ शकतो. अक्षर स्थिरांक हे एकल अवतरणांमध्ये बंद केलेले वर्ण आहे; उदाहरणार्थ "a" किंवा "0". असे अक्षर स्थिरांक हे ज्या मशीनवर प्रोग्राम कार्यान्वित केला जाईल त्या मशीनच्या वर्ण संचातील वर्णांच्या पूर्णांक मूल्यासाठी प्रतिकात्मक स्थिरांक असतात (जे प्रोग्राम संकलित केलेल्या मशीनवर वापरल्या जाणाऱ्या वर्ण संचाप्रमाणेच नसतात). म्हणून, जर तुम्ही ASCII अक्षर संच वापरून मशीनवर चालत असाल, तर "0" चे मूल्य 48 असेल, परंतु तुमचे मशीन EBCDIC वापरत असेल, तर ते 240 असेल. दशांश चिन्हांऐवजी अक्षर स्थिरांक वापरल्याने प्रोग्राम अधिक होतो. पोर्टेबल अनेक वर्णांची मानक नावे देखील आहेत जी बॅकस्लॅश \\ एस्केप वर्ण म्हणून वापरतात:

त्यांच्या देखाव्याच्या विरूद्ध, प्रत्येक एक प्रतीक आहे. तुम्ही एक-, दोन-, किंवा तीन-अंकी अष्टांक ( \\ त्यानंतर अष्टक अंकांनी वर्ण) किंवा एक-, दोन- किंवा तीन-अंकी हेक्साडेसिमल संख्या (\\x) म्हणून देखील दर्शवू शकता त्यानंतर हेक्साडेसिमल अंक). उदाहरणार्थ:

"\\6" "\\x6" 6 ASCII ack
"\\60" "\\x30" 48 ASCII "0"
"\\137" "\\x05f" 95 ASCII "_"

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

तार

स्ट्रिंग स्थिरांक हा दुहेरी अवतरणांमध्ये बंद केलेल्या वर्णांचा क्रम आहे:

"ही स्ट्रिंग आहे"

प्रत्येक स्ट्रिंग स्थिरांकामध्ये दिसते त्यापेक्षा एक अधिक वर्ण असतो; ते सर्व 0 मूल्यासह रिक्त वर्ण "\\0" ने समाप्त होतात.

उदाहरणार्थ:

आकार("asdf")==5;

C स्ट्रिंग "योग्य वर्णांच्या वेक्टर" प्रकाराची आहे, म्हणून "asdf" चार प्रकारची आहे. रिकामी स्ट्रिंग "" लिहिलेली आहे (आणि चार प्रकारची आहे). लक्षात घ्या की प्रत्येक स्ट्रिंगसाठी s strlen(s)==sizeof(s)-1, कारण strlen() हे ट्रेलिंग 0 चा आदर करत नाही.
नॉन-ग्राफिक वर्णांचे प्रतिनिधित्व करण्यासाठी बॅकस्लॅश कन्व्हेन्शन स्ट्रिंगमध्ये देखील वापरले जाऊ शकते. हे स्ट्रिंगमध्ये डबल कोट्स आणि एस्केप कॅरेक्टर \\ चे प्रतिनिधित्व करणे शक्य करते. या प्रकारचे सर्वात सामान्य वर्ण, अर्थातच, "\\n" हे नवीन वर्ण आहे.

उदाहरणार्थ:

काउट<< "гудок в конце сообщения\\007\\n"

जेथे 7 हे बेल (बेल) वर्णाचे ASKII मूल्य आहे.

स्ट्रिंगमध्ये "वास्तविक" नवीन रेखा असणे अशक्य आहे:

"ही स्ट्रिंग नाही
वाक्यरचना त्रुटी आहे"

तथापि, एका ओळीत बॅकस्लॅश असू शकतो त्यानंतर लगेचच नवीन ओळ येते; दोन्हीकडे दुर्लक्ष केले जाईल.

उदाहरणार्थ:

काउट<< "здесь все \\
ठीक आहे"

छापील

इथे सर्व काही ठीक आहे

बॅकस्लॅशच्या आधीच्या नवीन ओळीमुळे ओळीत नवीन ओळ येत नाही;

स्ट्रिंगमध्ये शून्य वर्ण असणे शक्य आहे, परंतु बहुतेक प्रोग्राम्स असे गृहीत धरत नाहीत की त्याच्या नंतर वर्ण आहेत. उदाहरणार्थ, strcpy() आणि strlen() सारख्या मानक फंक्शन्सद्वारे "asdf\\000hjkl" स्ट्रिंगला "asdf" म्हणून मानले जाईल.

ऑक्टल किंवा हेक्साडेसिमल नोटेशन वापरून स्ट्रिंगमध्ये अंकीय स्थिरांक घालताना, नेहमी तीन-अंकी संख्या वापरणे विवेकपूर्ण आहे. स्थिरांकानंतरचा वर्ण अंक आहे की नाही याची काळजी न करता रेकॉर्ड वाचणे पुरेसे कठीण आहे. या उदाहरणांचा विचार करा:

चार v1 = "a\\x0fah\\0129"; // "a" "\\xfa" "h" "\\12" "9"
char v2 = "a\\xfah\\129"; // "a" "\\xfa" "h" "\\12" "9"
char v3 = "a\\xfad\\127"; // "a" "\\xfad" "\\127"

आणि लक्षात ठेवा की 9-बिट बाइट असलेल्या मशीनवर दोन-अंकी हेक्साडेसिमल नोटेशन पुरेसे नाही.

शून्य

H ol (0) कोणत्याही पूर्णांक, फ्लोट किंवा पॉइंटर प्रकाराचा स्थिरांक म्हणून वापरला जाऊ शकतो. पत्ता 0 वर कोणतीही वस्तू स्थित नाही. शून्याचा प्रकार संदर्भानुसार निर्धारित केला जातो. हे सहसा (परंतु आवश्यक नसते) योग्य लांबीच्या सर्व-शून्य बिट्सच्या संचाद्वारे दर्शविले जाते.

कॉन्स्ट

कॉन्स्ट कीवर्ड ऑब्जेक्टच्या डिक्लेरेशनमध्ये जोडला जाऊ शकतो ज्यामुळे ऑब्जेक्ट व्हेरिएबल ऐवजी स्थिर बनतो.

उदाहरणार्थ:

कॉन्स्ट इंट मॉडेल = 145;
const int v = ( 1, 2, 3, 4 );

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

मॉडेल = 145; // त्रुटी
मॉडेल++; // त्रुटी

लक्षात घ्या की const प्रकारात बदल करतो, म्हणजे, स्थिरांक कसा ठेवायचा हे निर्दिष्ट करण्याऐवजी ऑब्जेक्टचा वापर कसा करता येईल यावर ते प्रतिबंधित करते. म्हणून, उदाहरणार्थ, रिटर्निंग कॉन्स्ट म्हणून फंक्शनचे वर्णन करणे अगदी वाजवी आणि कधीकधी उपयुक्त आहे:

Const char* peek(int i)
{
खाजगी [i] परत करा;
}

यासारखे फंक्शन एखाद्याला ओव्हरराईट किंवा पुन्हा लिहिता येत नाही (त्या व्यक्तीद्वारे) वाचू देण्यासाठी वापरले जाऊ शकते.

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

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

उदाहरणार्थ:

const char* pc = "asdf"; // स्थिरांकाकडे सूचक
pc = "a"; // त्रुटी
pc = "ghjk"; // ठीक आहे

पॉइंटरचेच वर्णन करण्यासाठी, पॉइंटेड ऑब्जेक्टचे नाही, स्थिर म्हणून, const* ऑपरेटर वापरला जातो.

उदाहरणार्थ:

चार *const cp = "asdf"; // सतत पॉइंटर
cp = "a"; // ठीक आहे
cp = "ghjk"; // त्रुटी

दोन्ही वस्तू स्थिरांक करण्यासाठी, त्या दोघांनाही स्थिरांक घोषित करणे आवश्यक आहे.

उदाहरणार्थ:

const char *const cpc = "asdf"; // const पॉइंटर ते const
cpc = "a"; // त्रुटी
cpc = "ghjk"; // त्रुटी

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

उदाहरणार्थ:

चार* strcpy(char* p, const char* q); // बदलू शकत नाही q

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

उदाहरणार्थ:

इंट a = 1;
const c = 2;
const* p1 = // ठीक आहे
const* p2 = // ठीक आहे
int* p3 = // त्रुटी
*p3 = 7; // c चे मूल्य बदलते

नेहमीप्रमाणे, वर्णनातून एखादा प्रकार वगळल्यास, तो int आहे असे गृहीत धरले जाते.

बदल्या

पूर्णांक स्थिरांक परिभाषित करण्यासाठी आणखी एक पद्धत आहे जी कधीकधी const वापरण्यापेक्षा अधिक सोयीची असते.

उदाहरणार्थ:

एनम (एएसएम, ऑटो, ब्रेक);

तीन पूर्णांक स्थिरांक परिभाषित करते, ज्यांना गणक म्हणतात, आणि त्यांना मूल्ये नियुक्त करते. डिफॉल्टनुसार गणक मूल्ये 0 पासून चढत्या क्रमाने नियुक्त केली जात असल्याने, हे लेखनाच्या समतुल्य आहे:

कॉन्स्ट एएसएम = 0;
const AUTO = 1;
const BREAK = 2;

गणनेला नाव दिले जाऊ शकते.

उदाहरणार्थ:

एनम कीवर्ड (ASM, AUTO, BREAK);

आणि enum नाव int साठी समानार्थी शब्द बनते, नवीन प्रकार नाही. फक्त int ऐवजी कीवर्ड व्हेरिएबल घोषित केल्याने प्रोग्रामर आणि कंपाइलर दोघांनाही एक इशारा मिळू शकतो की वापर हेतुपुरस्सर आहे.

उदाहरणार्थ:

कीवर्ड की;
स्विच (की) (
केस ASM:
// काहीतरी करतो
खंडित;
केस BREAK:
// काहीतरी करतो
खंडित;
}

कंपाइलरला चेतावणी देण्यास कारणीभूत ठरते कारण तीनपैकी फक्त दोन कीवर्ड मूल्ये वापरली जातात.

तुम्ही प्रगणक मूल्ये देखील स्पष्टपणे निर्दिष्ट करू शकता.

उदाहरणार्थ:

Enum int16 (
चिन्ह=0100000, // चिन्ह
most_significant=040000, // सर्वात लक्षणीय
किमान_लक्ष्य = 1 // किमान लक्षणीय
};

ही मूल्ये वेगळी, वाढणारी किंवा सकारात्मक असण्याची गरज नाही.



आम्ही वाचण्याची शिफारस करतो

वर