C++ Basics - GeeksforGeeks

06 Sep, 2021
C++ is a cross-platform language that can be used to create high-performance applications. It was developed by Bjarne Stroustrup, as an extension to the C language. The language was updated 3 major times in 2011, 2014, and 2017 to C++11, C++14, and C++17.
C++ is one of the world’s most popular programming languages.
C++ can be found in today’s operating systems, Graphical User Interfaces, and embedded systems.
C++ is an object-oriented programming language that gives a clear structure to programs and allows code to be reused, lowering development costs.
C++ is portable and can be used to develop applications that can be adapted to multiple platforms.
C++ is fun and easy to learn!
As C++ is close to C# and Java, it makes it easy for programmers to switch to C++ or vice versa.
C++
// C++ Hello World Program#include <iostream>using namespace std;int main(){  cout << "Hello World!\n";  return 0;}
Hello World!
Comments: The two slash(//) signs are used to add comments in a program. It does not have any effect on the behavior or outcome of the program. It is used to give a description of the program you’re writing.#include<iostream>: #include is the pre-processor directive that is used to include files in our program. Here we are including the iostream standard file which is necessary for the declarations of basic standard input/output library in  C++.Using namespace std: All elements of the standard C++ library are declared within a namespace.  Here we are using the std namespace.int main(): The execution of any C++ program starts with the main function, hence it is necessary to have a main function in your program. ‘int’ is the return value of this function. (We will be studying functions in more detail later).{}: The curly brackets are used to indicate the starting and ending point of any function. Every opening bracket should have a corresponding closing bracket.cout<<”Hello World!\n”; This is a C++ statement. cout represents the standard output stream in  C++. It is declared in the iostream standard file within the std namespace. The text between quotations will be printed on the screen. \n will not be printed, it is used to add a line break. Each statement in C++ ends with a semicolon (;).return 0; return signifies the end of a function. Here the function is main, so when we hit return 0, it exits the program. We are returning 0 because we mentioned the return type of the main function as integer (int main). A zero indicates that everything went fine and one indicates that something has gone wrong.
Comments: The two slash(//) signs are used to add comments in a program. It does not have any effect on the behavior or outcome of the program. It is used to give a description of the program you’re writing.
#include<iostream>: #include is the pre-processor directive that is used to include files in our program. Here we are including the iostream standard file which is necessary for the declarations of basic standard input/output library in  C++.
Using namespace std: All elements of the standard C++ library are declared within a namespace.  Here we are using the std namespace.
int main(): The execution of any C++ program starts with the main function, hence it is necessary to have a main function in your program. ‘int’ is the return value of this function. (We will be studying functions in more detail later).
{}: The curly brackets are used to indicate the starting and ending point of any function. Every opening bracket should have a corresponding closing bracket.
cout<<”Hello World!\n”; This is a C++ statement. cout represents the standard output stream in  C++. It is declared in the iostream standard file within the std namespace. The text between quotations will be printed on the screen. \n will not be printed, it is used to add a line break. Each statement in C++ ends with a semicolon (;).
return 0; return signifies the end of a function. Here the function is main, so when we hit return 0, it exits the program. We are returning 0 because we mentioned the return type of the main function as integer (int main). A zero indicates that everything went fine and one indicates that something has gone wrong.
The header file iostream must be included to make use of the input/output (cin/cout) operators.
Standard Output (cout)  
By default, the standard output of a program points at the screen. So with the cout operator and the “insertion” operator (фф) you can print a message onto the screen.
To print the content of a variable the double quotes are not used.
The << operator can be used multiple times in a single statement.
It is possible to combine variables and text:
The cout operator does not put a line break at the end of the output. So if you want to print two sentences you will have to use the new-line character ( \n ).
It is possible to use the endl manipulator instead of the new-line character.
Below is the C++ program to illustrate standard output:
C++
// C++ program to implement// standard output#include <iostream>using namespace std;int main(){  cout << "Geeks For Geeks";  return 0;}
Geeks For Geeks
Standard input (cin)  
In most cases, the standard input device is the keyboard. With the cin and >> operators, it is possible to read input from the keyboard.
The cin operator will always return the variable type that you use with cin. So if you request an integer you will get an integer and so on. This can cause an error when the user of the program does not return the type that you are expecting. (Example: you ask for an integer and you get a string of characters.)
The cin operator is also chainable. In this case, the user must give two input values, that are separated by any valid blank separator (tab, space, or new-line).
Below is the C++ program to illustrate standard input:
C++
// C++ program to implement// standard input#include <iostream>using namespace std;int main(){  int a;  cout << "Enter a number" << endl;      // User can input an integer  cin >> a;   cout << "User entered number " << a << endl;}
Enter a number
User entered number 0

Data types are declarations for variables. This determines the type and size of data associated with variables which are essential to know since different data types occupy the different sizes of memory.
1. int 
This data type is used to store integers.
It occupies 4 bytes in memory.
It can store values from -2147483648 to 2147483647.
Eg. int age = 18
2. float and double
Used to store floating-point numbers (decimals and exponential)
The size of a float is 4 bytes and the size of double is 8 bytes.
Float is used to store up to 7 decimal digits whereas double is used to store up to 15 decimal digits.
Example:float pi = 3.14.double distance = 24E8 // 24 x 108 
float pi = 3.14.
double distance = 24E8 // 24 x 108 
3. char 
This data type is used to store characters.
It occupies 1 byte in memory.
Characters in C++ are enclosed inside single quotes ‘ ‘ ASCII code is used to store characters in memory.
Example: char ch =’a’
4. bool 
This data type has only 2 values true and false.
It occupies 1 byte in memory.
True is represented as 1 and false as 0.
Example: bool flag = false
Type modifiers are used to modify the fundamental data types.
Below is the C++ program to implement Data types:
C++
// C++ program to implement// data types#include <iostream>using namespace std;int main(){  cout << "Size of bool is: " <<            sizeof(bool) <<           " bytes" << endl;  cout << "Size of char is: " <<            sizeof(char) <<           " bytes" << endl;  cout << "Size of int is: " <<            sizeof(int) <<           " bytes" << endl;  cout << "Size of short int is: " <<            sizeof(short int) <<           " bytes" << endl;  cout << "Size of long int is: " <<            sizeof(long int) <<           " bytes" << endl;  cout << "Size of signed long int is: " <<            sizeof(signed long int) <<           " bytes" << endl;  cout << "Size of unsigned long int is: " <<            sizeof(unsigned long int) <<           " bytes" << endl;  cout << "Size of float is: " <<            sizeof(float) <<            " bytes" << endl;  cout << "Size of double is: " <<            sizeof(double) <<           " bytes" << endl;  cout << "Size of wchar_t is: " <<            sizeof(wchar_t) << " bytes" << endl;  return 0;}
Size of bool is: 1 bytes
Size of char is: 1 bytes
Size of int is: 4 bytes
Size of short int is: 2 bytes
Size of long int is: 8 bytes
Size of signed long int is: 8 bytes
Size of unsigned long int is: 8 bytes
Size of float is: 4 bytes
Size of double is: 8 bytes
Size of wchar_t is: 4 bytes
These are the data types that are derived from fundamental (or built-in) data types. For example arrays, pointers, function, reference.
Below is the C++ program to implement derived data types:
C++
// C++ program to implement// derived data types#include <iostream>using namespace std;  // Function definitionint sum(int n1, int n2) {   return n1 + n2; }  int main(){  // array declaration and   // initialization  int arr[5] = {2, 4, 6, 8, 10};   cout << "Array elements are : ";      for (int i = 0; i < 5; i++)   {    // printing array elements    cout << arr[i] << " ";   }    // pointers  int a = 10;      // Declared a pointer of  // type int  int* p;       // Pointer p points the address   // of a  p = &a;   cout << "\n" << "Value of a is " <<            a << endl;      // address of a will be printed  cout << "Value of p is " << p <<            endl;       // value of a will be printed  cout << "Value of *p is " << *p <<            endl;     // function calling from main  cout << "Sum is:" << sum(5, 2) <<            endl;    // reference  int x = 10;  int& ref = x;    // Value of x is now changed   // to 30  ref = 30;   cout << "x = " << x << endl;    // Value of x is now changed   // to 40  x = 40;   cout << "ref = " << ref << endl;  return 0;}
Array elements are : 2 4 6 8 10 
Value of a is 10
Value of p is 0x7ffd0ec3c084
Value of *p is 10
Sum is:7
x = 30
ref = 40
These are the data types that are defined by the user themselves.
For example, class, structure, union, enumeration, etc.
Below is the C++ program to implement class user-defined data types:
C++
// C++ program to implement// user-defined data types#include <iostream>using namespace std;class GFG{  public:  string gfg;  void print()   {     cout << "String is: " <<              gfg;   }};  // Driver codeint main(){  GFG obj1;  obj1.gfg = "GeeksForGeeks is the best Technical Website";  obj1.print();  return 0;}
String is: GeeksForGeeks is the best Technical Website
Below is the C++ program to implement structure user-defined data type:
C++
// C++ program to implement // struct #include <iostream>using namespace std;  struct Geeks {  int a, b;};  // Driver codeint main(){  struct Geeks arr[10];  arr[0].a = 30;  arr[0].b = 40;  cout << arr[0].a << ", " <<          arr[0].b;  return 0;}
30, 40
Below is the C++ program to implement union user-defined data type:
C++
// C++ program to implement // union#include <iostream>using namespace std;union gfg {  int a, b;};  // Driver codeint main(){  union gfg g;  g.a = 5;  cout << "After changing a = 5:" <<            endl << "a = " << g.a <<           ", b = " << g.b << endl;  g.b = 15;  cout << "After changing b = 15:" <<            endl << "a = " << g.a <<           ", b = " << g.b << endl;  return 0;}
After changing a = 5:
a = 5, b = 5
After changing b = 15:
a = 15, b = 15
Below is the C++ program to implement enumeration data type:
C++
// C++ program to implement // enum#include <iostream>using namespace std;enum season {   Autmn, Spring, Winter, Summer};  // Driver codeint main(){  enum season month;  month = Summer;  cout << month;  return 0;}
3
Operators are nothing but symbols that tell the compiler to perform some specific operations. Operators are of the following types –
1. Arithmetic Operators  
Arithmetic operators perform some arithmetic operations on one or two operands. Operators that operate on one operand are called unary arithmetic operators and operators that operate on two operands are called binary arithmetic operators.
+,-,*,/,% are binary operators.
++, — are unary operators.
Suppose: A=5 and B=10
Below is the C++ program to implement arithmetic operators:
C++
// C++ program to implement// arithmetic operators#include <iostream>using namespace std;  // Driver codeint main(){  int a = 5;  int b = 10;    cout << "Sum of a and b is" <<           " " << a + b << endl;  cout << "Difference of b and a is" <<           " " << b - a << endl;  cout << "Multiplication of a and b is" <<           " " << a * b << endl;  cout << "Division of b and a is" <<           " " << b / a << endl;  cout << "Modulo of b and a is" <<           " " << b % a << endl;  return 0;}
Sum of a and b is 15
Difference of b and a is 5
Multiplication of a and b is 50
Division of b and a is 2
Modulo of b and a is 0
Pre-incrementer: It increments the value of the operand instantly.Post-incrementer: It stores the current value of the operand temporarily and only after that statement is completed, the value of the operand is incremented.Pre-decrementer: It decrements the value of the operand instantly.Post-decrementer: It stores the current value of the operand temporarily and only after that statement is completed, the value of the operand is decremented.
Pre-incrementer: It increments the value of the operand instantly.
Post-incrementer: It stores the current value of the operand temporarily and only after that statement is completed, the value of the operand is incremented.
Pre-decrementer: It decrements the value of the operand instantly.
Post-decrementer: It stores the current value of the operand temporarily and only after that statement is completed, the value of the operand is decremented.
Below is the C++ program to implement Post-incrementer and Post-decrementer:
C++
// C++ program to implement// post-incrementer and// post-decrementer#include <iostream>using namespace std;  // Driver codeint main(){  int a = 10;  int b;  int c;  b = a++;  cout << a << " " <<          b << endl;  c = a--;  cout << a << " " <<          c << endl;  return 0;}
11 10
10 11
Below is the C++ program to implement Pre-incrementer and Pre-decrementer:
C++
// C++ program to implement// pre-incrementer and // pre-decrementer#include <iostream>using namespace std;  // Driver codeint main(){  int a = 10;  int b;  int c;  b = ++a;  cout << a << " " <<          b << endl;  c = --a;  cout << a << " " <<          c << endl;  return 0;}
11 11
10 10
2. Relational Operators  
Relational operators define the relation between 2 entities. They give a boolean value as result i.e true or false.
Suppose: A=5 and B=10
Below is the C++ program to implement relational operators:
C++
// C++ program to implement// relational operators#include <iostream>using namespace std;  // Driver codeint main(){  int a = 5;  int b = 10;    if (a == b)  {    cout << "a==b is not equal to true" <<              endl;  }      if (a != b)   {    cout << "a != b is true" <<              endl;  }      if (a > b)  {    cout << "a > b is not true" <<             endl;  }      if (a < b)  {    cout << "a < b is true" << endl;  }      if (a >= b)  {    cout << "a >= b is not true" <<              endl;  }      if (a <= b)  {    cout << "a <= b is true" <<              endl;  }  return 0;}
a != b is true
a < b is true
a <= b is true
3. Logical Operators  
Logical operators are used to connecting multiple expressions or conditions together. We have 3 basic logical operators.
Suppose: A=0 and B=1
Below is the C++ program to implement the logical operators:
C++
// C++ program to implement// the logical operators#include <iostream>using namespace std;  // Driver codeint main(){  int a = 0;  int b = 1;    if (a && b)  {    cout << "a && b is false" <<              endl;  }      if (a || b)  {    cout << "a || b is true" <<              endl;  }      if (!a)   {    cout << "!a is true" <<              endl;  }  return 0;}
a || b is true
!a is true
Example:
If we need to check whether a number is divisible by both 2 and 3, we will use the AND operator: (num%2==0) && num(num%3==0)
If this expression gives true value then that means that num is divisible by both 2 and 3. (num%2==0) || (num%3==0)
If this expression gives true value then that means that num is divisible by 2 or 3 or both.
4. Bitwise Operators  
Bitwise operators are the operators that operate on bits and perform bit-by-bit operations.
Suppose: A = 5(0101) and B = 6(0110)
    0101
& 0110
———-
    0100
  0101
| 0110
———
   0111
    0101
^ 0110
———-
    0011
4 (0100)
4 << 1
= 1000 = 8
4 >> 1
= 0010 = 2
If shift operator is applied on a number N then,
N<<a will give a result N*2^a
N>>a will give a result N/2^a
Below is the C++ program to implement bitwise operators:
C++
// C++ program to implement// bitwise operators#include <iostream>using namespace std;  // Driver codeint main(){  // Binary representation   // of 5 is 0101  int a = 5;       // Binary representation   // of 6 is 0110  int b = 6;   cout << (a & b) << endl;  cout << (a | b) << endl;  cout << (a ^ b) << endl;  cout << (a << 1) << endl;  cout << (a >> 1) << endl;    return 0;}
4
7
3
10
2
5. Assignment Operators
Below is the C++ program to implement assignment operator:
C++
// C++ program to implement// assignment operator#include <iostream>using namespace std;  // Driver codeint main(){  // a is assigned value 5  int a = 5;       // a becomes 5  cout << a << endl;     // this is same as a=a+2  a += 2;       // a becomes 5+2 =7  cout << a << endl;     // this is same as a=a-2  a -= 2;       // a becomes 7-2 =5  cout << a << endl;     // this is same as a=a*2  a *= 2;       // a becomes 5*2 =10  cout << a << endl;     // this is same as a=a/2  a /= 2;       // a becomes 10/2 =5  cout << a << endl;     return 0;}
5
7
5
10
5
6. Misc Operators
Below is the C++ program to implement miscellaneous operator:
C++
// C++ program to implement// miscellaneous operator#include <iostream>using namespace std;  // Driver codeint main(){  int a = 4;      // sizeof () returns the size  // of variable in bytes  cout << sizeof(a) << endl;       int x = 5;  int y = 8;      // ternary or conditional operator  int min = x < y ? x : y;  cout << "Minimum value from x and y is " <<           min << endl;    // casting from float to int  cout << int(4.350) << endl;     // comma operator is used for  int d = 2, b = 3, c = 4;       // multiple declarations  cout << d << " " << b << " " <<           c << " " << endl;  return 0;}
4
Minimum value from x and y is 5
4
2 3 4 
1. if/else  
The if block is used to specify the code to be executed if the condition specified in it is true, the else block is executed otherwise. Below is the C++ program to implement if-else:
C++
// C++ program to implement// if-else#include <iostream>using namespace std;  // Driver codeint main(){  int age;  cin >> age;    if (age >= 18)   {    cout << "You can vote.";  }  else   {    cout << "Not eligible for voting.";  }    return 0;}
Not eligible for voting.
2. else if  
To specify multiple if conditions, we first use if and then the consecutive statements use else if. Below is the C++ program to implement else if:
C++
// C++ program to implement// else if#include <iostream>using namespace std;  // Driver codeint main(){  int x, y;  cin >> x >> y;  if (x == y)   {    cout << "Both the numbers are equal";  }  else if (x > y)   {    cout << "X is greater than Y";  }  else   {    cout << "Y is greater than X";  }  return 0;}
Y is greater than X
3. nested if  
To specify conditions within conditions we make the use of nested ifs. Below is the C++ program to implement nested if:
C++
// C++ program to implement// nested if#include <iostream>using namespace std;  // Driver codeint main(){  int x, y;  cin >> x >> y;      if (x == y)   {    cout << "Both the numbers are equal";  }  else   {    if (x > y)     {      cout << "X is greater than Y";    }    else     {      cout << "Y is greater than X";    }  }  return 0;}
Y is greater than X
4. Switch Statement  
Switch case statements are a substitute for long if statements that compare a  variable to multiple values. After a match is found, it executes the corresponding code of that value case. 
Syntax:  
switch (n)
{
  case 1:     // code to be executed if n == 1;
  break;
  case 2:    // code to be executed if n == 2;
  break;
  default:   // code to be executed if n doesn't match any of the above cases
} 
The variable in the switch should have a constant value.
The break statement is optional. It terminates the switch statement and moves control to the next line after the switch.
If the break statement is not added, the switch will not get terminated and it will continue onto the next line after the switch.
Every case value should be unique.
The default case is optional. But it is important as it is executed when no case value could be matched.
Basic Calculator Using Switch Statement:
C++
// C++ program to implement// the switch statement#include <iostream>using namespace std;  // Driver codeint main(){  int n1, n2;  char op;  cout << "Enter 2 numbers: ";  cin >> n1 >> n2;  cout << "Enter operand: ";  cin >> op;      switch (op)  {    case '+':      cout << n1 + n2 << endl;      break;    case '-':      cout << n1 - n2 << endl;      break;    case '*':      cout << n1 * n2 << endl;      break;    case '/':      cout << n1 / n2 << endl;      break;    case '%':      cout << n1 % n2 << endl;      break;      default:      cout << "Operator not found!" <<                endl;      break;  }    return 0;}
Enter 2 numbers: Enter operand: Operator not found!
A loop is used for executing a block of statements repeatedly until a particular condition is satisfied. A loop consists of an initialization statement, a test condition, and an increment statement.
1. for loop  
The syntax of the for loop is  
for (initialization; condition; update)
{
   // body of-loop
}
Below is the C++ program to implement for loop:
C++
// C++ program to implement// for loop#include <iostream>using namespace std;  // Driver codeint main(){  for (int i = 1; i <= 5; i++)   {    cout << i << " ";  }  return 0;}
1 2 3 4 5 
Explanation:
The for loop is initialized by the value 1, the test condition is i<=5 i.e the loop is executed till the value of i remains lesser than or equal to 5. In each iteration, the value of i is incremented by one by doing i++.
2. while loop  
The syntax for while loop is  
while (condition) 
{
 // body of the loop
}
Below is the C++ program to implement while loop:
C++
// C++ program to implement// while loop#include <iostream>using namespace std;  // Driver codeint main(){  int i = 1;  while (i <= 5)   {    cout << i << " ";    i++;  }  return 0;}
1 2 3 4 5 
Explanation:
The while loop is initialized by the value 1, the test condition is i<=5 i.e the loop is executed till the value of i remains lesser than or equal to 5. In each iteration, the value of i is incremented by one by doing i++.
3. do͙ while loop  
The syntax for while loop is  
do {
// body of loop;
}
while (condition);
Below is the C++ program to implement do-while loop:
C++
// C++ program to implement// do-while loop#include <iostream>using namespace std;  // Driver codeint main(){  int i = 1;  do {    cout << i << " ";    i++;  } while (i <= 5);  return 0;}
1 2 3 4 5 
Explanation:
The do-while loop variable is initialized by the value 1, in each iteration, the value of i is incremented by one by doing i++, the test condition is i<=5 i.e the loop is executed till the value of i remains lesser than or equal to 5. Since the testing condition is checked only once the loop has already run so a do-while loop runs at least once.
Jumps in loops are used to control the flow of loops. There are two statements used to implement jump in loops – Continue and Break. These statements are used when we need to change the flow of the loop when some specified condition is met.
1. Continue  
The continue statement is used to skip to the next iteration of that loop. This means that it stops one iteration of the loop. All the statements present after the continue statement in that loop are not executed.
Below is the C++ program to implement the Continue statement:
C++
// C++ program to implement// the continue statement#include <iostream>using namespace std;  // Driver codeint main(){  int i;  for (i = 1; i <= 20; i++)   {    if (i % 3 == 0)     {      continue;    }    cout << i << endl;  }}
1
2
4
5
7
8
10
11
13
14
16
17
19
20
Explanation:
In this for loop, whenever i is a number divisible by 3, it will not be printed as the loop will skip to the next iteration due to the continue statement. Hence, all the numbers except those which are divisible by 3 will be printed.
2. Break  
The break statement is used to terminate the current loop. As soon as the break statement is encountered in a loop, all further iterations of the loop are stopped and control is shifted to the first statement after the end of the loop.
Below is the C++ program to implement the break statement:
C++
// C++ program to implement// the break statement#include <iostream>using namespace std;  // Driver codeint main(){  int i;  for (i = 1; i <= 20; i++)   {    if (i == 11)     {      break;    }    cout << i << endl;  }}
1
2
3
4
5
6
7
8
9
10
Explanation:
In this loop, when i becomes equal to 11, the for loop terminates due to break statement, Hence, the program will print numbers from 1 to 10 only.
as5853535
Technical Scripter 2020
C++
Technical Scripter
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Operator Overloading in C++
Polymorphism in C++
Friend class and function in C++
Sorting a vector in C++
std::string class in C++
Inline Functions in C++
Pair in C++ Standard Template Library (STL)
Array of Strings in C++ (5 Different Ways to Create)
Convert string to char array in C++
List in C++ Standard Template Library (STL)