Thư viện C - <limit.h>

Các limits.htiêu đề xác định các thuộc tính khác nhau của các loại biến khác nhau. Các macro được định nghĩa trong tiêu đề này, giới hạn giá trị của nhiều loại biến khác nhau như char, int và long.

Các giới hạn này chỉ định rằng một biến không thể lưu trữ bất kỳ giá trị nào vượt quá các giới hạn này, ví dụ: một ký tự không dấu có thể lưu trữ giá trị tối đa là 255.

Macro thư viện

Các giá trị sau dành riêng cho việc triển khai và được xác định bằng chỉ thị #define, nhưng các giá trị này không được thấp hơn bất kỳ giá trị nào được đưa ra ở đây.

Macro Giá trị Sự miêu tả
CHAR_BIT số 8 Xác định số bit trong một byte.
SCHAR_MIN -128 Xác định giá trị tối thiểu cho một ký tự có dấu.
SCHAR_MAX +127 Xác định giá trị lớn nhất cho một ký tự có dấu.
UCHAR_MAX 255 Xác định giá trị lớn nhất cho một ký tự không dấu.
CHAR_MIN -128 Xác định giá trị nhỏ nhất cho kiểu char và giá trị của nó sẽ bằng SCHAR_MIN nếu char biểu thị giá trị âm, nếu không.
CHAR_MAX +127 Xác định giá trị cho kiểu char và giá trị của nó sẽ bằng SCHAR_MAX nếu char đại diện cho giá trị âm, nếu không thì UCHAR_MAX.
MB_LEN_MAX 16 Xác định số byte tối đa trong một ký tự nhiều byte.
SHRT_MIN -32768 Xác định giá trị nhỏ nhất cho một số nguyên ngắn.
SHRT_MAX +32767 Xác định giá trị lớn nhất cho một số nguyên ngắn.
USHRT_MAX 65535 Xác định giá trị lớn nhất cho một số int ngắn không dấu.
INT_MIN -2147483648 Xác định giá trị nhỏ nhất cho một int.
INT_MAX +2147483647 Xác định giá trị lớn nhất cho một int.
UINT_MAX 4294967295 Xác định giá trị lớn nhất cho một int không dấu.
LONG_MIN -9223372036854775808 Xác định giá trị nhỏ nhất cho một số nguyên dài.
LONG_MAX +9223372036854775807 Xác định giá trị lớn nhất cho một số nguyên dài.
ULONG_MAX 18446744073709551615 Xác định giá trị lớn nhất cho một int dài không dấu.

Thí dụ

Ví dụ sau đây cho thấy việc sử dụng một vài hằng số được định nghĩa trong limits.h tập tin.

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

int main() {

   printf("The number of bits in a byte %d\n", CHAR_BIT);

   printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
   printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
   printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);

   printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
   printf("The maximum value of SHORT INT = %d\n", SHRT_MAX); 

   printf("The minimum value of INT = %d\n", INT_MIN);
   printf("The maximum value of INT = %d\n", INT_MAX);

   printf("The minimum value of CHAR = %d\n", CHAR_MIN);
   printf("The maximum value of CHAR = %d\n", CHAR_MAX);

   printf("The minimum value of LONG = %ld\n", LONG_MIN);
   printf("The maximum value of LONG = %ld\n", LONG_MAX);
  
   return(0);
}

Hãy để chúng tôi biên dịch và chạy chương trình trên sẽ tạo ra kết quả sau:

The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807