C Programming language

Data Type in C
Previous Home Next

Primary data type, Integer Type, Floating Point Types, Void type, Character Type, Size and Range of Data Types on 16 bit machine, derived data type, Declaration of Variables, User defined type declaration, Declaration of Storage Class, auto, static, extern, and register, Defining Symbolic Constants, Declaring Variable as Constant and Volatile Variable.

C language data types can be classified as.

  1. Primary data type
  2. Derived data type
  3. User-defined data type

Integer Type

Integers are whole numbers with a machine dependent range of values. A good programming language as to support the programmer by giving a control on a range of numbers and storage space. C has 3 classes of integer storage namely short int, int and long int. All of these data types have signed and unsigned forms. A short int requires half the space than normal integer values. Unsigned numbers are always positive and consume all the bits for the magnitude of the number. The long and unsigned integers are used to declare a longer range of values.

Floating Point Types

Floating point number represents a real number with 6 digits precision. Floating point numbers are denoted by the keyword float. When the accuracy of the floating point number is insufficient, we can use the double to define the number. The double is same as float but with longer precision. To extend the precision further we can use long double which consumes 80 bits of memory space

Void Type

Using void data type, we can specify the type of a function. It is a good practice to avoid functions that does not return any values to the calling function.

Primary data type

All C Compilers accept the following fundamental data type
3Floating Pointfloat
4Double precision floating pointdouble

The size and range of each data type is given in the table below

float3.4 e-38 to 3.4 e+38
double1.7 e-308 to 1.7 e+308

Character Type

A single character can be defined as a defined as a character type of data. Characters are usually stored in 8 bits of internal storage. The qualifier signed or unsigned can be explicitly applied to char. While unsigned characters have values between 0 and 255, signed characters have values from –128 to 127.

Size and Range of Data Types on 16 bit machine.

char or signed char8-128to127
unsigned char8-0to255
int or signed int16-32768to32767
unsigned int16-0to65535
Short int or Signed short int8-128to127
Unsigned short int80to255
Long int or signed long int32-2147483648 to 2147483647
Unsigned long int80 to 4294967295
float323.4 e-38 to 3.4 e+38
double641.7e-308 to 1.7e+308
Long double20 3.4 e-4932 to 3.4 e+4932

Non-Primitive Data Type

A non-primitive data type is am abstract data type that is built out of primitive data types - linked list, queue, stack, etc.

Declaration of Variables

Every variable used in the program should be declared to the compiler. The declaration does two things.

  1. Tells the compiler the variables name.
  2. Specifies what type of data the variable will hold.


Int sum;
Int number, salary;
Double average;
Data typeKeyword Equivalent
Unsigned Characterunsigned char
Signed CharacterSigned Char
Signed Integersigned int (or) int
Signed Short Integersigned short int (or) short int (or) short
Signed Long Integersigned long int (or) long int (or) long
UnSigned Integerunsigned int (or) unsigned
UnSigned Short Integerunsigned short int (or) unsigned short
UnSigned Long Integerunsigned long int (or) unsigned long
Floating Pointfloat
Double Precision Floating Point double
Extended Double Precision Floating Pointlong double

User defined type declaration

In C language a user can define an identifier that represents an existing data type. The user defined datatype identifier can later be used to declare variables. The general syntax is typedef type identifier;

here type represents existing data type and ‘identifier’ refers to the ‘row’ name given to the data type.


typedef int salary;
typedef float average;

Here salary symbolizes int and average symbolizes float. They can be later used to declare variables as follows:

Units dept1, dept2; Average section1, section2;

Therefore dept1 and dept2 are indirectly declared as integer datatype and section1 and section2 are indirectly float data type.

The second type of user defined datatype is enumerated data type which is defined as follows.

Enum identifier {value1, value2 …. Value n};

The identifier is a user defined enumerated datatype which can be used to declare variables that have one of the values enclosed within the braces. After the definition we can declare variables to be of this ‘new’ type as below.

enum identifier V1, V2, V3, ……… Vn The enumerated variables V1, V2, ….. Vn can have only one of the values value1, value2 ….. value n


enum day {Monday, Tuesday, …. Sunday};

enum day week_st, week end;

week_st = Monday;

week_end = Friday;

if(wk_st == Tuesday) week_en = Saturday;

if(wk_st == Tuesday) week_en = Saturday;
Previous Home Next