3.0 Data Types in C
3.0 Data Types in C
•
••
Each variable in C has an associated data type. It specifies the type of data that the variable
can store like integer, character, floating, double, etc. Each data type requires different
amounts of memory and has some specific operations which can be performed over it.
The data types in C can be classified as follows:
Types Description Data Types
Primitive data types are the most basic data types that are used
Primitive Data int, char, float,
for representing simple values such as integers, float,
Types double, void
characters, etc.
The data types that are derived from the primitive or built-in array, pointers,
Derived Types
datatypes are referred to as Derived Data Types. function
int main()
{
// Integer value with positive data.
int a = 9;
return 0;
}
Output
Integer value with positive data: 9
Integer value with negative data: -9
Integer value with an unsigned int data: 89
Integer value with an long int data: 99998
int main()
{
char a = 'a';
char c;
a++;
printf("Value of a after increment is: %c\n", a);
return 0;
}
Output
Value of a: a
Value of a after increment is: b
Value of c: c
int main()
{
float a = 9.0f;
float b = 2.5f;
// 2x10^-4
float c = 2E-4f;
printf("%f\n", a);
printf("%f\n", b);
printf("%f", c);
return 0;
}
Output
9.000000
2.500000
0.000200
int main()
{
double a = 123123123.00;
double b = 12.293123;
double c = 2312312312.123123;
printf("%lf\n", a);
printf("%lf\n", b);
printf("%lf", c);
return 0;
}
Output
123123123.000000
12.293123
2312312312.123123
int main()
{
int val = 30;
void* ptr = &val;
printf("%d", *(int*)ptr);
return 0;
}
Output
30
int main()
{
int size_of_int = sizeof(int);
int size_of_char = sizeof(char);
int size_of_float = sizeof(float);
int size_of_double = sizeof(double);
return 0;
}
Output
The size of int data type : 4
The size of char data type : 1
The size of float data type : 4
The size of double data type : 8
Different data types also have different ranges up to which they can store numbers. These
ranges may vary from compiler to compiler. Below is a list of ranges along with the memory
requirement and format specifiers on the 32-bit GCC compiler.
Data Type Size (bytes) Range Format Specifier
Note: The long, short, signed and unsigned are datatype modifier that can be used with some
primitive data types to change the size or length of the datatype.
Literals in C
•••
In C, Literals are the constant values that are assigned to the variables. Literals represent
fixed values that cannot be modified. Literals contain memory but they do not have
references as variables. Generally, both terms, constants, and literals are used
interchangeably.
For example, “const int = 5;“, is a constant expression and the value 5 is referred to as a
constant integer literal.
Types of C Literals
There are 4 types of literal in C:
• Integer Literal
• Float Literal
• Character Literal
• String Literal
1. Integer Literals
Integer literals are used to represent and store the integer values only. Integer literals are
expressed in two types i.e.
A) Prefixes: The Prefix of the integer literal indicates the base in which it is to be read.
For Example:
0x10 = 16
Because 0x prefix represents a HexaDecimal base. So 10 in HexaDecimal is 16 in Decimal. Hence
the value 16.
There are basically represented into 4 types:
a. Decimal-literal(base 10): A non-zero decimal digit followed by zero or more decimal
digits(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).
Example:
56, 78
b. Octal-literal(base 8): a 0 followed by zero or more octal digits(0, 1, 2, 3, 4, 5, 6, 7).
Example:
045, 076, 06210
c. Hex-literal(base 16): 0x or 0X followed by one or more hexadecimal digits(0, 1, 2, 3, 4, 5,
6, 7, 8, 9, a, A, b, B, c, C, d, D, e, E, f, F).
Example:
0x23A, 0Xb4C, 0xFEA
d. Binary-literal(base 2): 0b or 0B followed by one or more binary digits(0, 1).
Example:
0b101, 0B111
B) Suffixes: The Suffixes of the integer literal indicates the type in which it is to be read.
For example:
12345678901234LL
indicates a long long integer value 12345678901234 because of the suffix LL
These are represented in many ways according to their data types.
• int: No suffix is required because integer constant is by default assigned as an int
data type.
• unsigned int: character u or U at the end of an integer constant.
• long int: character l or L at the end of an integer constant.
• unsigned long int: character ul or UL at the end of an integer constant.
• long long int: character ll or LL at the end of an integer constant.
• unsigned long long int: character ull or ULL at the end of an integer constant.
Example:
C
#include <stdio.h>
int main()
{
Output
Integer Literal:10
2. Floating-Point Literals
These are used to represent and store real numbers. The real number has an integer part, real
part, fractional part, and exponential part. The floating-point literals can be stored either in
decimal form or exponential form. While representing the floating-point decimals one must
keep two things in mind to produce valid literal:
• In the decimal form, one must include the integer part, or fractional part, or both,
otherwise, it will lead to an error.
• In the exponential form, one must include both the significand and exponent part,
otherwise, it will lead to an error.
A few floating-point literal representations are shown below:
Valid Floating Literals:
10.125
1.215e-10L
10.5E-3
Invalid Floating Literals:
123E
1250f
0.e879
Example:
C
#include <stdio.h>
int main()
{
// constant float literal
const float floatVal = 4.14;
Output
Floating point literal: 4.14
3. Character Literals
This refers to the literal that is used to store a single character within a single quote. To store
multiple characters, one needs to use a character array. Storing more than one character
within a single quote will throw a warning and display just the last character of the literal. It
gives rise to the following two representations:
• char type: This is used to store normal character literal or narrow-character
literals.
Example:
char chr = 'G';
Example:
C
#include <stdio.h>
int main()
{
// constant char literal
const char charVal = 'A';
Output
Character Literal: A
Escape Sequences: There are various special characters that one can use to perform various
operations.
4. String Literals
String literals are similar to that character literals, except that they can store multiple
characters and uses a double quote to store the same. It can also accommodate the special
characters and escape sequences mentioned in the table above. We can break a long line into
multiple lines using string literal and can separate them with the help of white spaces.
Example:
char stringVal[] = "GeeksforGeeks";
Example:
C
#include <stdio.h>
int main()
{
const char str[]
= "Welcome\nTo\nGeeks\tFor\tGeeks";
printf("%s", str);
return 0;
}
Output
Welcome
To
Geeks For Geeks
Escape Sequence in C
•
The•• escape sequence in C is the characters or the sequence of characters that can be used
inside the string literal. The purpose of the escape sequence is to represent the characters
that cannot be used normally using the keyboard. Some escape sequence characters are the
part of ASCII charset but some are not.
Different escape sequences represent different characters but the output is dependent on the
compiler you are using.
Escape Sequence List
The table below lists some common escape sequences in C language.
Escape
Sequence Name Description
\n New Line It moves the cursor to the start of the next line.
\r Carriage Return It moves the cursor to the start of the current line.
Hexadecimal
\xhh It represents the hexadecimal number.
Number
Out of all these escape sequences, \n and \0 are used the most. In fact, escape sequences like
\f, \a, are not even used by programmers nowadays.
Escape Sequence in C Examples
The following are the escape sequence examples that demonstrate how to use different
escape sequences in C language.
1. Example to demonstrate how to use \a escape sequence in C
C
// C program to illustrate \a escape sequence
#include <stdio.h>
int main(void)
{
// output may depend upon the compiler
printf("My mobile number "
"is 7\a8\a7\a3\a9\a2\a3\a4\a0\a8\a");
return (0);
}
Output
My mobile number is 7873923408
2. Example to demonstrate how to use \b escape sequence in C
C
// C program to illustrate \b escape sequence
#include <stdio.h>
int main(void)
{
// \b - backspace character transfers
// the cursor one character back with
// or without deleting on different
// compilers.
printf("Hello \b\b\b\b\b\bHi Geeks");
return (0);
}
Output
Hello Hi Geeks
3. Example to demonstrate how to use \n escape sequence in C
C
// C program to illustrate \n escape sequence
#include <stdio.h>
int main(void)
{
// Here we are using \n, which is a new line character.
printf("Hello\n");
printf("GeeksforGeeks");
return (0);
}
Output
Hello
GeeksforGeeks
4. Example to demonstrate how to use \t escape sequence in C
C
// C program to illustrate \t escape sequence
#include <stdio.h>
int main(void)
{
// Here we are using \t, which is
// a horizontal tab character.
// It will provide a tab space
// between two words.
printf("Hello \t GFG");
return (0);
}
Output
Hello GFG
The escape sequence “\t” is very frequently used in loop-based pattern printing programs.
5. Example to demonstrate how to use \v escape sequence in C
C
// C program to illustrate \v escape sequence
#include <stdio.h>
int main(void)
{
// Here we are using \v, which
// is vertical tab character.
printf("Hello friends\v");
printf("Welcome to GFG");
return (0);
}
Output
Hello friends
Welcome to GFG
6. Example to demonstrate how to use \r escape sequence in C
C
// C program to illustrate \r escape sequence
#include <stdio.h>
int main(void)
{
// Here we are using \r, which
// is carriage return character.
printf("Hello Geeks \rGeeksfor");
return (0);
}
Output
Hello Geeks
Geeksfor
7. Example to demonstrate how to use \\ escape sequence in C
C
// C program to illustrate \\(Backslash)
// escape sequence to print backslash.
#include <stdio.h>
int main(void)
{
// Here we are using \,
// It contains two escape sequence
// means \ and \n.
printf("Hello\\GFG");
return (0);
}
Output
Hello\GFG
Explanation: It contains two ‘\’ which means we want print ‘\’ as output.
8. Example to demonstrate how to use \’ and \” escape sequence in C
C
// C program to illustrate \' escape
// sequence/ and \" escape sequence to
// print single quote and double quote.
#include <stdio.h>
int main(void)
{
printf("\' Hello Geeks\n");
printf("\" Hello Geeks");
return 0;
}
Output
' Hello Geeks
" Hello Geeks
9. Example to demonstrate how to use \? escape sequence in C
C
// C program to illustrate
// \? escape sequence
#include <stdio.h>
int main(void)
{
// Here we are using \?, which is
// used for the presentation of trigraph
// in the early of C programming. But
// now we don't have any use of it.
printf("\?\?!\n");
return 0;
}
Output
??!
10. Example to demonstrate how to use \ooo escape sequence in C
C
// C program to illustrate \OOO escape sequence
#include <stdio.h>
int main(void)
{
// we are using \OOO escape sequence, here
// each O in "OOO" is one to three octal
// digits(0....7).
char* s = "A\072\065";
printf("%s", s);
return 0;
}
Output
A:5
Explanation: Here 000 is one to three octal digits(0….7) means there must be at least one
octal digit after \ and a maximum of three. Here 072 is the octal notation, first, it is converted
to decimal notation which is the ASCII value of char ‘:’. At the place of \072, there is: and the
output is A:5.
11. Example to demonstrate how to use \xhh escape sequence in C
C
// C program to illustrate \XHH escape
// sequence
#include <stdio.h>
int main(void)
{
// We are using \xhh escape sequence.
// Here hh is one or more hexadecimal
// digits(0....9, a...f, A...F).
char* s = "B\x4a";
printf("%s", s);
return 0;
}
Output
BJ
Explanation: Here hh is one or more hexadecimal digits(0….9, a…f, A…F). There can be more
than one hexadecimal number after \x. Here, ‘\x4a’ is a hexadecimal number and it is a single
char. Firstly it will get converted into decimal notation and it is the ASCII value of the char ‘J’.
Therefore at the place of \x4a, we can write J. So the output is BJ.