Read in Hindi
Read in English

Today we will something more about variables and expressions. Lets read some important points about this tutorial.
  1. Compiler - Which convert C/C++ program into machine language. To compile in Linux we write gcc filename.c in terminal which creates a binary file named a.out in same directory. If there is already a file with same name then that will be replaced. Same process happens in background in windows too when we build a program.
  2. main() function - This is the point where program starts to execute. printf() function prints its parameters on screen. Later we will see in detail about expressions passed to main and printf.
  3. Declaring variable declare and defining(example int x =10) - As we have seen in before each variable have 3 parts. 1st is datatype which is integer here,2nd is name of variable eg x and 3rd is its value which is 10 in given example.

If we just write int x; it means we have declared it but not defined yet, in other words not assigned any value to it. Remember we should not use(read) the variable till we assign a value to it. Because the moment we declare it, compiler will give some memory to it which can contain garbage value which is not desirable. usually in beginning of function or program we declare variable and before using it we assign some value to it. when we assign a value to variable, the value is written in memory.

In computer memory is divided into sequential which can be addressed. Address of 1st byte is 0, address of 2nd byte is 1 and so on.

In C/C++ computer programming language there are many kind of datatypes, some important of them are given following.
  1. int - Which stores integer. A value in the range of −2,147,483,648 to 2,147,483,647 can be stored.
  2. float - Which takes decimal number eg 1.2, .002 etc.
  3. char - Which stores a character eg. e,b,h ... Computer stores each character as a number for example if we want to store a then computer will store 97 for that. Using ASCII table you can know the mapping from character to integer stored in computer.
  4. These datatypes have some important variants as -
  5. double - This is variant of float which can store a decimal more precisely hence takes more memory to store this.
  6. short int - This is variant of int which takes lesser memory hence smaller range ( −32,768 to 32,767 ).
  7. long int - This is also variant of int which takes more memory hence wider range (−9,223,372,036,854,775,808 to +9,223,372,036,854,775,807 ). similarly there is long double
  8. unsigned int - This is a variant of int which can not take negative values hence its ranges increases to 0 to 4,294,967,295. Similarly we have unsigned long int and unsigned short int.

In last topic(C/C++ hindi tutorial) we have written a program which calculates interest given rate, time and price but in that program all 4 variables were int, But can be cases where rate is in decimal as well other parameters. Lets modify code to work with decimal.
#include <stdio.h>

int main() {

float price;
float rate ;
float time;

price = 1000.0 ;
rate = 5.3;
time = 3.5;

float interest;
interest = price*rate*time/100.0;

printf("Price is %f, Rate is %f, time is %f, calculated interest is %f", price, rate, time, interest);

scanf("%s");
return 1;
}
Here if you notice we have replaced %d with %f in printf. %f is used to print float value in printf.
Note: If you run above code in Linux terminal, it will give Segmentation Fault which we will ignore for now. Later we will remove this error when we talk about scanf.
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम variables और expressions के बारे में थोडा और जानेंगे.
चलिए पिछले सारे C/C++ hindi tutorial के महत्वपूर्ण बिन्दुओं को एक बार फिर से दोहराते हुए आगे बढ़ते है !
  1. Compiler - जो C/C++ में लिखे गए program को मशीनी language में परिवर्तित कर देता है. compile करने के लिए हम Linux में gcc filename.c terminal में लिखते है जो उसी फोल्डर मेंa.out नाम से एक binary फाइल बना देता है. अगर a.out पहले से वहां है तो ये उसे बदल (replace) कर देगा! Windows पर भी यही प्रक्रिया है जो कि build एवं run करने पर background में चलती है!
  2. main() function - जहाँ से C का program चलना (execute) होना शुरू होता है. printf() function जो अपने अन्दर लिखे गए expression को बाहर terminal पर print कर देता है. main एवं printf के अन्दर लिखे जाने वाले expressions के बारे में हम आगे विस्तार में अध्ययन करेंगे.
  3. Variable declare करना एवं define करना (example int x =10) - जैसा कि पिछले लेख में हमने देखा किसी भी variable के 3 भाग होते हैं, पहला उसका datatype, जैसे की यहाँ integer. दूसरा उसका नाम जैसे कि x एवं तीसरा उसका मान (value), जो कि उपरोक्त उदहारण में 10 है.

अब अगर हम केवल int x; लिखते है, तो इसका मतलब ये है कि हमने इसे declare तो कर दिया है पर इसे अभी define नहीं किया है अर्थाथ x को अभी तक कोई value नहीं दी है. ध्यान रहे जब तक हम किसी भी variable को value नहीं दे देते हमे उसे उपयोग में नहीं लेना चाहिए क्यूंकि compiler x के लिए memory तो निर्धारित (allocate) कर देगा मगर उस memory में पहले से भी कुछ हो सकता है, जो कि वांछनीय(desirable) नही है. सामान्यतया किसी भी function या program के शुरू में हम variables को declare करते है. इसके बाद इसे उपयोग में लेने से पहले उसे उचित मान देते है. मान देने के लिए = चिन्ह से पहले variable का नाम एवं इसके बाद में उसकी value लिखते है. जब हम किसी variable को कोई मान देते है तो execute होते वक़्त वह value निर्धारित memory में लिख दी जाती है.

computer जैसे सारे उपकरणों में सामान्यतया मेमोरी sequential bytes में विभाजित होती है. जिसे हम address कर सकते है. पहली byte का एड्रेस 0 होता है. दूसरी का 1 .. इसी तरह आगे की सारी memory address की जाती है. 1 byte में 8 bits होते है. जहाँ bits किसी भी value को store करने की सबसे छोटी इकाई है. 1 bit में हम या तो 0 store कर सकते हैं या फिर 1.

C/C++ computer programming language में बहुत सारे datatypes है उनमे से मुख्यतया निम्न उपयोग में आते है,
  1. int - जो कि एक पूर्णांक (integer) मान लेता है. जिनमे हम −2,147,483,648 से 2,147,483,647 (range) तक की कोई भी value store कर सकते है.
  2. float - जो कि एक दशमलव (real number) मान लेता है जैसे कि 1.2, .002 etc.
  3. char - जो कि एक अक्षर(character जैसे a,b ...) को store करता है. Computer हर अक्षर को number की तरह store करता है. जैसे की अगर हम a store करना चाहते हैं तो Computer 97 store करेगा. ASCII table की सहायता से आप यह जान सकते हैं की किस character के लिए Computer कौन सा number store करता है.
  4. इन datatypes के कई महत्वपूर्ण रूपांतरण (variant) भी है, जैसे कि -
  5. double - ये float का variant है जो कि ज्यादा शुद्धता से मान ग्रहण कर सकता है. इसलिए यह float से ज्यादा memory लेता है.
  6. short int - ये int का variant है, इसका परिसर( −32,768 से 32,767 ) है, जोकि int से कम है इसलिए यह int से कम memory लेता है..
  7. long int - ये भी int का ही एक variant है. जो कि 32 bit architecture machine पर 4 byte एवं 64 bit architecture machine पर 8 bytes लेता है. एवं इसी के अनुसार इसका परिसर int से बड़ा ( −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 ) या बराबर होता है. इसी तरह long double भी है.
  8. unsigned int - ये int का एक ऐसा variant है जो negative value नहीं लेता है. इसी कारन उन्ही 4 bytes में positive परिसर (range) बढ़ कर 0 से +4,294,967,295 हो जाता है. इसी तरह unsigned long int एवं unsigned short int भी है.

हमने पिछले topic(C/C++ hindi tutorial) में एक program लिखा था जो कि दिए गये दर (rate), समय (time) एवं मूल्य (price) के लिए ब्याज (interest) कि गणना करता है. परन्तु हमने उस code में दर, समय एवं मूल्य तीनो int लिए है. क्या ऐसा नहीं हो सकता कि हमे दर दशमलव में दी हो? या फिर समय int ना हो? जरुर हो सकता है! तो हमारे code को उस परिस्थिति में भी काम करवाने के लिए निम्न code से replace कर दें.
#include <stdio.h>

int main() {

float price;
float rate ;
float time;

price = 1000.0 ;
rate = 5.3;
time = 3.5;

float interest;
interest = price*rate*time/100.0;

printf("Price is %f, Rate is %f, time is %f, calculated interest is %f", price, rate, time, interest);

scanf("%s");
return 1;
}
अगर हम ध्यान दे तो ये पायेंगे कि यहाँ printf में हमने %d की जगह %f का उपयोग किया है, %d int को print करने के लिए उपयोग में आता है एवं %f float value को.
Note: अगर आप ऊपर दिए गए C/C++ program को Linux में Run करे तो अंत में यह Segmentation Fault error देगा, जिसे अभी के लिए ignore कर दें उसका कारन और हटाने का तरीका बाद में बताया जायेगा जब हम scanf के बारे में बात करेंगे.