C Library –


C Library – <limits.h>


”;


The C Library limits.h header file defines various properties of the different variable types. The macros defined in this header, limits the values of various variable types like char, int and long.

These limits specify that a variable cannot store any value beyond these limits, for example an unsigned character can store up to a maximum value of 255.

<limits.h> Library Macros

The following values are implementation-specific and defined using the #define directive. However, these values may not be lower than the given ones.

Macro Value Description
CHAR_BIT 8 Defines the number of bits in a byte.
SCHAR_MIN -128 Defines the minimum value for a signed char.
SCHAR_MAX +127 Defines the maximum value for a signed char.
UCHAR_MAX 255 Defines the maximum value for an unsigned char.
CHAR_MIN -128 Defines the minimum value for type char and its value will be equal to SCHAR_MIN if char represents negative values, otherwise zero.
CHAR_MAX +127 Defines the value for type char and its value will be equal to SCHAR_MAX if char represents negative values, otherwise UCHAR_MAX.
MB_LEN_MAX 16 Defines the maximum number of bytes in a multi-byte character.
SHRT_MIN -32768 Defines the minimum value for a short int.
SHRT_MAX +32767 Defines the maximum value for a short int.
USHRT_MAX 65535 Defines the maximum value for an unsigned short int.
INT_MIN -2147483648 Defines the minimum value for an int.
INT_MAX +2147483647 Defines the maximum value for an int.
UINT_MAX 4294967295 Defines the maximum value for an unsigned int.
LONG_MIN -9223372036854775808 Defines the minimum value for a long int.
LONG_MAX +9223372036854775807 Defines the maximum value for a long int.
ULONG_MAX 18446744073709551615 Defines the maximum value for an unsigned long int.

Note that, the above macros help developer to write efficient code that works consistently across different platforms and compilers.

Example 1

Following is the basic C Library program to display the range value of various macros under the limits.h header file.

#include <stdio.h>
#include <limits.h>

int main() {
   printf("The value of CHAR_BIT: %dn", CHAR_BIT);
   printf("The value of SCHAR_MIN: %dn", SCHAR_MIN);
   printf("The value of SCHAR_MAX: %dn", SCHAR_MAX);
   printf("The value of UCHAR_MAX: %un", UCHAR_MAX);
   printf("The value of CHAR_MIN: %dn", CHAR_MIN);
   printf("The value of CHAR_MAX: %dn", CHAR_MAX);
   printf("The value of MB_LEN_MAX: %dn", MB_LEN_MAX);
   printf("The value of SHRT_MIN: %dn", SHRT_MIN);
   printf("The value of SHRT_MAX: %dn", SHRT_MAX);
   printf("The value of USHRT_MAX: %un", USHRT_MAX);
   printf("The value of INT_MIN: %dn", INT_MIN);
   printf("The value of INT_MAX: %dn", INT_MAX);
   printf("The value of UINT_MAX: %un", UINT_MAX);
   printf("The value of LONG_MIN: %ldn", LONG_MIN);
   printf("The value of LONG_MAX: %ldn", LONG_MAX);
   printf("The value of ULONG_MAX: %lun", ULONG_MAX);
   return 0;
}

Output

On execution of above code, we get the following result −

The value of CHAR_BIT: 8
The value of SCHAR_MIN: -128
The value of SCHAR_MAX: 127
The value of UCHAR_MAX: 255
The value of CHAR_MIN: -128
The value of CHAR_MAX: 127
The value of MB_LEN_MAX: 16
The value of SHRT_MIN: -32768
The value of SHRT_MAX: 32767
The value of USHRT_MAX: 65535
The value of INT_MIN: -2147483648
The value of INT_MAX: 2147483647
The value of UINT_MAX: 4294967295
The value of LONG_MIN: -9223372036854775808
The value of LONG_MAX: 9223372036854775807
The value of ULONG_MAX: 18446744073709551615

Example 2

In this example, we illustrate the program for finding the minimum and maximum values.

#include <stdio.h>
#include <limits.h>

int main() {
   int input[] = {89, 5, 21, 10, 45, 31, 98};
   int n = sizeof(input) / sizeof(input[0]);

   // Initialization of macros
   int min_value = INT_MAX;
   int max_value = INT_MIN;
   
   // loop iteration for min and max value
   for (int i = 0; i < n; ++i) {
       if (input[i] < min_value) {
           min_value = input[i];
       }
       if (input[i] > max_value) {
           max_value = input[i];
       }
   }
   // Display the result
   printf("Minimum value: %dn", min_value);
   printf("Maximum value: %dn", max_value);

   return 0;
}

Output

On execution of above code, we get the following result −

Minimum value: 5
Maximum value: 98

Example 3

Below the program initializes limit macros(CHAR_MIN/MAX) to generate the minimum and maximum length of character from the given string.

#include <stdio.h>
#include <limits.h>
#include <string.h>

int main() {
   char* char_input[] = {"RUSSIA", "UK", "INDIA", "NEWYORK", "INDONESIA", "DUBAI"};
   int num_strings = sizeof(char_input) / sizeof(char_input[0]);

   // Initialization of CHAR macros
   int min_length = CHAR_MAX;
   int max_length = CHAR_MIN;

   for (int i = 0; i < num_strings; ++i) {
       int current_length = strlen(char_input[i]);
       if (current_length < min_length) {
           min_length = current_length;
       }
       if (current_length > max_length) {
           max_length = current_length;
       }
   }

   printf("Minimum length of characters: %dn", min_length);
   printf("Maximum length of characters: %dn", max_length);

   return 0;
}

Output

The above code produces the following result −

Minimum length of characters: 2
Maximum length of characters: 9

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *