Literals in C++ (original) (raw)

Literals are fundamental elements used to represent fixed values. These values can include numbers, characters, strings, and more. They are generally present as the right operand in the assignment operation. **For example:

C++ `

#include using namespace std;

int main() { // Assigning an integer value to integer variable int val = 22;

  cout << val << endl;
  cout << 22 << endl;

  // Assigning a new value
  val = 6;
  cout << val << endl;
  cout << 22;
return 0;

}

`

**Explanation: In the above example, the **val variable is first assigned a value **22. This value is a literal of integer type. Now further in the program, the value of **val may change, but the integer literal 22 will always represent the natural number 22 no matter where it is used.

C++ supports various types of literals to represent the values of different data types. In this article, we will discuss all the necessary information on C++ literals and their usage.

c_literals

Types of literals in C++

Types of Literals in C++

There are five types of literals in C++ based on the type of information they represent:

1. Integer Literals

Integer literals in C++ are values that represent whole numbers without the fractional or decimal part. They can be positive or negative and can have different bases such as decimal, octal, or hexadecimal. In C++, integer literals can be categorized into various types based on their bases.

**1. Decimal Literal (No Prefix): The decimal literal represents an integer in base 10 without any prefix.

C++ `

#include using namespace std;

int main() { int dec= 42; cout << dec << endl; return 0; }

`

**2. Octal Literal (Prefix: 0): The octal literal represents an integer in base 8 and is preceded by the 0 prefix.

C++ `

#include using namespace std;

int main() { int oct= 052; cout << oct << endl; return 0; }

`

**3. Hexadecimal Literal (Prefix: 0x or 0X): The hexadecimal literal represents an integer in the base 16 and is preceded by either 0x or 0X prefix.

C++ `

#include using namespace std;

int main() { int hex= 0x2A; cout << hex << endl; return 0; }

`

**4. Binary Literal (Prefix: 0b or 0B): Binary literals use the prefix 0b or 0B to represent base-2 values.

C++ `

#include using namespace std;

int main() { int bin= 0b101010; cout << bin << endl; return 0; }

`

**5. Long Integer Literal (Suffix: l or L): The long integer literal can be suffixed with the l or L to indicate that it is of type long int.

C++ `

#include using namespace std;

int main() { long int lint= 42L; cout << lint << endl; return 0; }

`

**6. Unsigned Integer Literal (Suffix: u or U): The unsigned integer literal can be suffixed with the u or U to indicate that it is of type unsigned int.

C++ `

#include using namespace std;

int main() { unsigned int uint= 42U; cout << uint << endl; return 0; }

`

**7. Long Long Integer Literal (Suffix: ll or LL): The long long integer literal can be suffixed with the ll or LL to indicate that it is of type long long int.

C++ `

#include using namespace std;

int main() { long long int llint= 42LL; cout << llint << endl; return 0; }

`

2. Floating-Point Literals

The Floating-point literals in C++ are the values that represent numbers with the fractional or decimal part. These can be either single-precision or double-precision values. Like integer literals, the floating-point literals use f/F for float and l/L for long double. Double literals do not require any suffix as they are the default type.

**1. Float Literals (Suffix: f or F): Floating point literals are specified by adding **f or F as a suffix to fractional values.

C++ `

#include using namespace std;

int main() { float f = 3.14f; cout << f << endl; return 0; }

`

**2. Double Literals (Suffix: d or D): The double precision floating point literals are the default literals for fractional values but can also be manually specified.

C++ `

#include using namespace std;

int main() { double d = 3.14; cout << d << endl; return 0; }

`

**3. Long Double Literals (Suffix: l or L): The long double floating point literals can be specified using l or L as a suffix to fractional values.

C++ `

#include using namespace std;

int main() { long double ld = 3.14L; cout << ld << endl; return 0; }

`

**Note: If there is no decimal point, the literal is treated as an integer type. Its exact type (int, long, or long long) depends on its value and any suffix used.

**4. Scientific Notation: The scientific notations help us to represent very large or small value in compact form.

C++ `

#include using namespace std;

int main() { long double sld = 1.22e11; cout << sld << endl; return 0; }

`

3. Character Literals

The character literals in C++ are values that represent individual characters or escape sequences. They are enclosed in single quotes, and you can use them to represent the single character. C++ is not limited to ASCII and supports a wide range of character sets, including Unicode, allowing many more possible character literals.

C++ `

#include using namespace std;

int main() { // Character variable assigned to character literal char c = 'A'; cout << c; return 0; }

`

4. String Literals

The string literals in C++ are the sequences of the characters enclosed in double quotes, and you can use them to represent text or character sequences. A string literal doesn't need to be a meaningful word, it can be any random collection of one or more characters.

C++ `

#include using namespace std;

int main() { // String assigned to a string literal const char* s = "Hello, GeeksforGeeks!"; cout << s; return 0; }

`

Output

Hello, GeeksforGeeks!

**Note: String literals are lvalues in C++. However, they are not the only entities with special value category behavior in modern C++.

5. Boolean Literals

The boolean literals represent the truth values and have only two possible values: **true and **false. These values are used in the Boolean expressions and logic operations.

C++ `

#include using namespace std;

int main() { bool isTrue = true; bool isFalse = false;

if (isTrue)
    cout << "isTrue is true" << endl;
else
    cout << "isTrue is false" << endl;

if (isFalse)
    cout << "isFalse is true" << endl;
else
    cout << "isFalse is false" << endl;

return 0;

}

`

Output

isTrue is true isFalse is false