// this section is to explain data types in cpp /* int x=5; here x is variable and it is of data type integer. we have following data types: 1. intger (1,2,3..-4,-556, ., int) 2. char (characters, strings?) 3. flaoting point (double,float) 4. bool 5. arrays 6. classes 7. structures 5/2=2 5.0/2=2.5 5/2.0=2.5 #include<iostream> int main() { std::cout<<5.0/2<<"\t"<<5/2<<"\t"<<5/2.0<<std::endl; } follwing code will generate the following output: 2.5 2 2.5 int data types stores less memory. int x=9999999999999999; will generate following error. p5_data_types.cpp:47:8: warning: overflow in conversion from ‘long int’ to ‘int’ changes value from ‘99999999999999’ to ‘276447231’ [-Woverflow] 47 | int x=99999999999999; */ #include<iostream> #include <climits> #include<float.h> //will help us for FLT_DIG use which tells us the number of significant digits float,double, long double are trustworthy. int main() { short a; int b; //at least 16 bits, usually 32 bits long c; //32 bits long long d; //64 bits //short<<int<<long<<long long //each of these have unsigned counterparts, unsigned one's will only allow positive values unsigned short aa; unsigned int bb; unsigned long cc; unsigned long long dd; using std::cout; using std::endl; char x=50; cout<<"the value of x won't be what has assigned :"<< x<<endl; cout<<"sizeof char in bytes "<<sizeof(char)<<endl; cout<<"sizeof(short) in bytes"<<sizeof(short)<<endl; cout<<"sizeof(short int) in bytes"<<sizeof(short int)<<endl; cout<<"sizeof(int) in bytes"<<sizeof(int)<<endl; cout<<"sizeof(long) in bytes"<<sizeof(long)<<endl; cout<<"sizeof(double) in bytes"<<sizeof(double)<<endl; cout<<"sizeof(long int ) in bytes"<<sizeof(long int)<<endl; cout<<"sizeof(long long) in bytes"<<sizeof(long long)<<endl; cout<<"sizeof(long double) in bytes"<<sizeof(long double)<<endl; cout<<"sizeof(long long int) in bytes"<<sizeof(long long int)<<endl; cout<<"sizeof(unsigned short) in bytes"<<sizeof(unsigned short)<<endl; cout<<"sizeof(unsigned int) in bytes"<<sizeof(unsigned int)<<endl; cout<<"sizeof(unsigned long) in bytes"<<sizeof(unsigned long)<<endl; cout<<"sizeof(unsigned long long) in bytes"<<sizeof(unsigned long long)<<endl; cout<<"sizeof(short) "<<SHRT_MIN<<" TO "<<SHRT_MAX<<endl; cout<<"sizeof(int) "<<INT_MIN<<" TO "<<INT_MAX<<endl; cout<<"sizeof(long) "<<LONG_MIN<<" TO "<<LONG_MAX<<endl; cout<<"sizeof(long long) "<<LLONG_MIN<<" TO "<<LLONG_MAX<<endl; cout<<"sizeof(unsigned short) "<<USHRT_MAX<<endl; cout<<"sizeof(unsigned int) "<<UINT_MAX<<endl; cout<<"sizeof(unsigned long) "<<ULONG_MAX<<endl; cout<<"sizeof(unsigned long long) "<<ULLONG_MAX<<endl; bool am_I_ok=true; cout<<bool(am_I_ok)<<endl; cout<<std::boolalpha<<am_I_ok<<endl; float aaa=10.0/3; double bbb=10.0/3; long double ccc=10.0/3; cout<<std::fixed<<aaa*1000000000000000000<<" \twhich is true upto "<<FLT_DIG<<" digits"<<endl; cout<<std::fixed<<bbb*1000000000000000000<<" \twhich is true upto "<<DBL_DIG<<" digits"<<endl; cout<<std::fixed<<ccc*1000000000000000000<<" \twhich is true upto "<<LDBL_DIG<<" digits"<<endl; /* 333333326835482624.000000 which is true upto 6 digits 3333333333333333504.000000 which is true upto 15 digits 3333333333333333481.250000 which is true upto 18 digits */ } /* Purpose of char data types is to store small numbers or characters It is characterised in integer data types which we will see. sizeof(char) is just 8 bits or 1 byte. char x=''; single quotes for individual characters, x='a', double quotes are reserved for strings. signed char stores value from -128 to 127 and unsigned char stores values from 0 to 255. signed char x=128; cout<<(int) x<<std::endl; //will not provide us 128 but -127 unsigned char x=128; cout<<(int) x <<std::endl; //will print 128. char x='A'; cout<<(int) x ; will print 65 which is ASCII value of char A. char x=55; cout<<(int) x; will print 55 ; char x=55; cout<<x; // will print 2 char16_t and char32_t stores characters from different language(hindi,....) these char data types gives us enough memory to store different characters. ESCAPE SEQUENCE: \t,\n, \b delete a charater. \n for next line. \t for tab. \v for verticl tab. \a for ? \0 for null terminating character. \" "\ is used to put quotes around in cout<<"I am \"vishal"\ "; will print I am "vishal". \\ is used to print a single backslash. look on internet for full list of escape sequences. Bool Data types: bool pizza_is_bad=true; or bool pizza_is_bad=1; we can use both. cout<<pizza_is_bad ; and cout<<bool(pizza_is_bad); will print 1. purpose of bool variable : it is used as flag. cout<<std::boolalpha<<pizza_is_bad<<endl; will print true or false rather than 1 or 0. or we can use if statement: if(pizza_is_bad) cout<<"true"; Floating point data types(float and double and long double): int main() { float a; //only trustworthy upto certain significant digits. double b; long double c; } Constants: 1.const int x=5; //now x is a constant, it is no longer a variable. x=10; will throw some error. This is called symbolic constant. const int x; x=5; will also throw some error, as x is not a variable. 2.Another way to declare constant is outside main() #include<iostream> #define x 10 //here x is constant (this is called macro constant) int main() { } 3.Another way is to via enum: {enum y=100}; is used inside main(). */