C - Data Types
C - Data Types
C - Data Types
Data types in C refer to an extensive system used for declaring variables or functions of
different types. The type of a variable determines how much space it occupies in storage
and how the bit pattern stored is interpreted. In this chapter, we will learn about data
types in C. A related concept is that of "variables", which refer to the addressable location
in the memory of the processor. The data captured via different input devices is stored in
the computer memory. A symbolic name can be assigned to the storage location called
variable name.
C is a statically typed language. The name of the variable along with the type of data it
intends to store must be explicitly declared before actually using it.
C is also a strongly typed language, which means that the automatic or implicit conversion
of one data type to another is not allowed.
Basic Types
1 They are arithmetic types and are further classified into: (a) integer types and
(b) floating-point types.
Enumerated types
2 They are again arithmetic types and they are used to define variables that can
only assign certain discrete integer values throughout the program.
Derived types
4 They include (a) Pointer types, (b) Array types, (c) Structure types, (d) Union
types and (e) Function types.
The array types and structure types are referred collectively as the aggregate types. The
type of a function specifies the type of the function's return value. We will see the basic
types in the following section, where as other types will be covered in the upcoming
chapters.
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 1/7
16/11/2024 11:40 C - Data Types
-9223372036854775808 to
long 8 bytes
9223372036854775807
To get the exact size of a type or a variable on a particular platform, you can use the
sizeof operator. The expressions sizeof(type) yields the storage size of the object or type
in bytes.
Open Compiler
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 2/7
16/11/2024 11:40 C - Data Types
return 0;
}
Output
When you compile and execute the above program, it produces the following result on
Linux−
CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 3/7
16/11/2024 11:40 C - Data Types
The header file "float.h" defines the macros that allow you to use these values and other
details about the binary representation of real numbers in your programs.
Open Compiler
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
return 0;
}
Output
When you compile and execute the above program, it produces the following result on
Linux −
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 4/7
16/11/2024 11:40 C - Data Types
Note: "sizeof" returns "size_t". The type of unsigned integer of "size_t" can vary
depending on platform. And, it may not be long unsigned int everywhere. In such cases,
we use "%zu" for the format string instead of "%d".
Earlier versions of C did not have Boolean data type. C99 standardization of ANSI C
introduced _bool type which treats zero value as false and non-zero as true.
Explore our latest online courses and learn new skills at your own pace. Enroll and
become a certified expert to boost your career.
struct student {
char name[20];
int marks, age;
};
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 5/7
16/11/2024 11:40 C - Data Types
union ab {
int a;
float b;
};
We shall learn more about structure and union types in a later chapter.
Pointers to void
A pointer of type void * represents the address of an object, but not its type.
3
For example, a memory allocation function void *malloc( size_t size );
returns a pointer to void which can be casted to any data type.
int marks[5];
Arrays can be initialized at the time of declaration. The values to be assigned are put in
parentheses.
C also supports multi-dimensional arrays. To learn more about arrays, refer to the chapter
on Arrays in C.
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 6/7
16/11/2024 11:40 C - Data Types
int x;
int *y;
y = &x;
Here, "y" is a pointer variable that stores the address of variable "x" which is of "int" type.
Pointers are used for many different purposes. Text string manipulation and dynamic
memory allocation are some of the processes where the use of pointers is mandatory.
Later in this tutorial, you can find a detailed chapter on Pointers in C.
https://www.tutorialspoint.com/cprogramming/c_data_types.htm 7/7