# Limits in C++

Before using the data types, one should know the maximum and minimum value of the same. It helps to avoid the numeric overflow error. In this program you will get to know the maximum and minimum values of integer data types. These are short, int and long as described in the data type in C++

This program uses the climits header file. The climits header file contains all the constants like SHRT_MAX, INT_MAX, etc. This file provides the value of maximum and minimum of short, int and long integers. Each of these are signed integer types. To define the unsigned integer type, we need to declare it separately. As char are also integer data types, this file contains the required data for the char data.

The following table illustrates the constants of the climits file, their values and their description. These values may vary depending on the values stored in the file.

 Constants Value Description sizeof(short) 2 Size of short int sizeof(int) 4 Size of int sizeof(long) 4 Size of long int SHRT_MAX 32767 Maximum short value SHRT_MIN -32768 Minimum short value USHRT_MAX 65535 Maximum unsigned short value INT_MAX 2147483647 Maximum int value INT_MIN -2147483648 Minimum int value UINT_MAX 4294967295 Maximum unsigned int value LONG_MAX 2147483647 Maximum long value LONG_MIN -2147483648 Minimum long value ULONG_MIN 4294967295 Maximum unsigned long value CHAR_BIT 8 Number of bits in a char CHAR_MAX 127 Maximum char value CHAR_MIN -128 Minimum char value UCHAR_MAX 255 Maximum unsigned char value

The size of operator is used to get the size of the data types. This program shows that the size of short is 2 bytes, int is 4 bytes and long is 4 bytes. The size of char is 1 byte i.e. it contains 8 bits. We can get the size of the short, int, long or char by using the function sizeof() on the particular data types. Please go through the program to get the proper insight of the functionality.

Program

#include<iostream>
#include<climits>
int main(){
using namespace std;

short short_max = SHRT_MAX;
int int_max = INT_MAX;
long long_max = LONG_MAX;

short short_min = SHRT_MIN;
int int_min = INT_MIN;
long long_min = LONG_MIN;

unsigned ushort_max = USHRT_MAX;
unsigned uint_max = UINT_MAX;
unsigned ulong_max = ULONG_MAX;

int char_bits = CHAR_BIT;
int char_max = CHAR_MAX;
int char_min = CHAR_MIN;
int uchar_max = UCHAR_MAX;

cout<<"size of short is "<<sizeof(short)<<" bytes"<<endl;
cout<<"size of int is "<<sizeof(int)<<" bytes"<<endl;
cout<<"size of long is "<<sizeof(long)<<" bytes"<<endl;

cout<<"maximum value of short is "<<short_max<<endl;
cout<<"maximum value of int is "<<int_max<<endl;
cout<<"maximum value of long is "<<long_max<<endl;

cout<<"minimum value of short is "<<short_min<<endl;
cout<<"minimum value of int is "<<int_min<<endl;
cout<<"minimum value of long is "<<long_min<<endl;

cout<<"maximum value of unsigned short is "<<ushort_max<<endl;
cout<<"maximum value of unsigned int is "<<uint_max<<endl;
cout<<"maximum value of unsigned long is "<<ulong_max<<endl;

cout<<"number of bits in a char is "<<char_bits<<endl;
cout<<"maximum value of char is "<<char_max<<endl;
cout<<"minimum value of char is "<<char_min<<endl;
cout<<"maximum value of unsigned char is "<<uchar_max<<endl;

return 0;
}


You can copy the program in any text editor and save it as integer_limit.cpp. The same can be viewed in the image below. Here Dev C++ IDE is used for writing, compiling and running the program. Image 1 highlights the program and image 2 shows the result for the same.

You might have noted that there is not unsigned short, unsigned int or unsigned long. All of these have the value 0. They are also not assigned in the climits file. If you force it, you will get a compile time error. The unsigned is used to store the large positive values. We should use unsigned integer types for the values which are always positive. We should use these types according to the usage. short is smaller than an int, so it can be used to conserve memory. Thought you might not have any shortage of the memory in your computer but it is really helpful if we are using an embedded system.