C語言筆記 14_標準庫&assert&ctype&errno&float&limits

C 標準庫

<assert.h>

簡介

C 標準庫的 assert.h頭文件提供了一個名爲 assert 的宏,它可用於驗證程序作出的假設,並在假設爲假時輸出診斷消息。html

已定義的宏 assert 指向另外一個宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。若是已在引用 <assert.h> 的源文件中定義 NDEBUG 爲宏名稱,則 assert 宏的定義以下:git

#define assert(ignore) ((void)0)

庫宏

下面列出了頭文件 assert.h 中定義的惟一的函數:express

序號 函數 & 描述
1 void assert(int expression) 這其實是一個宏,不是一個函數,可用於在 C 程序中添加診斷。

assert()

描述

C 庫宏 void assert(int expression) 容許診斷信息被寫入到標準錯誤文件中。換句話說,它可用於在 C 程序中添加診斷。dom

聲明

下面是 assert() 宏的聲明。函數

void assert(int expression);
參數
  • expression -- 這能夠是一個變量或任何 C 表達式。若是 expression 爲 TRUE,assert() 不執行任何動做。若是 expression 爲 FALSE,assert() 會在標準錯誤 stderr 上顯示錯誤消息,並停止程序執行。
返回值

這個宏不返回任何值。測試

實例

下面的實例演示了 assert() 宏的用法。編碼

#include <assert.h>
#include <stdio.h>
 
int main()
{
   int a;
   char str[50];
     
   printf("請輸入一個整數值: ");
   scanf("%d", &a);
   assert(a >= 10);
   printf("輸入的整數是: %d\n", a);
    
   printf("請輸入字符串: ");
   scanf("%s", str);
   assert(str != NULL);
   printf("輸入的字符串是: %s\n", str);
    
   return(0);
}

讓咱們在交互模式下編譯並運行上面的程序,以下所示:spa

請輸入一個整數值: 11
輸入的整數是: 11
請輸入字符串: runoob
輸入的字符串是: runoobcode

<ctype.h>

簡介

C 標準庫的 ctype.h 頭文件提供了一些函數,可用於測試和映射字符。htm

這些函數接受 int 做爲參數,它的值必須是 EOF 或表示爲一個無符號字符。

若是參數 c 知足描述的條件,則這些函數返回非零(true)。若是參數 c 不知足描述的條件,則這些函數返回零。

庫函數

下面列出了頭文件 ctype.h 中定義的函數:

序號 函數 & 描述
1 int isalnum(int c) 檢查所傳的字符是不是字母和數字。
2 int isalpha(int c) 檢查所傳的字符是不是字母。
3 int iscntrl(int c) 檢查所傳的字符是不是控制字符。
4 int isdigit(int c) 檢查所傳的字符是不是十進制數字。
5 int isgraph(int c) 檢查所傳的字符是否有圖形表示法。
6 int islower(int c) 檢查所傳的字符是不是小寫字母。
7 int isprint(int c) 檢查所傳的字符是不是可打印的。
8 int ispunct(int c) 檢查所傳的字符是不是標點符號字符。
9 int isspace(int c) 檢查所傳的字符是不是空白字符。
10 int isupper(int c) 檢查所傳的字符是不是大寫字母。
11 int isxdigit(int c) 檢查所傳的字符是不是十六進制數字。

標準庫還包含了兩個轉換函數,它們接受並返回一個 "int"

序號 函數 & 描述
1 int tolower(int c) 把大寫字母轉換爲小寫字母。
2 int toupper(int c) 把小寫字母轉換爲大寫字母。

字符類

序號 字符類 & 描述
1 數字 完整的數字集合 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
2 十六進制數字 集合 { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f }
3 小寫字母 集合 { a b c d e f g h i j k l m n o p q r s t u v w x y z }
4 大寫字母 集合 {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }
5 字母 小寫字母和大寫字母的集合
6 字母數字字符 數字、小寫字母和大寫字母的集合
7 標點符號字符 集合 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [  ] ^ _ ` { | } ~
8 圖形字符 字母數字字符和標點符號字符的集合
9 空格字符 製表符、換行符、垂直製表符、換頁符、回車符、空格符的集合。
10 可打印字符 字母數字字符、標點符號字符和空格字符的集合。
11 控制字符 在 ASCII 編碼中,這些字符的八進制代碼是從 000 到 037,以及 177(DEL)。
12 空白字符 包括空格符和製表符。
13 字母字符 小寫字母和大寫字母的集合。

<errno.h>

簡介

C 標準庫的 errno.h 頭文件定義了整數變量 errno,它是經過系統調用設置的,在錯誤事件中的某些庫函數代表了什麼發生了錯誤。該宏擴展爲類型爲 int 的可更改的左值,所以它能夠被一個程序讀取和修改。

在程序啓動時,errno 設置爲零,C 標準庫中的特定函數修改它的值爲一些非零值以表示某些類型的錯誤。您也能夠在適當的時候修改它的值或重置爲零。

errno.h 頭文件定義了一系列表示不一樣錯誤代碼的宏,這些宏應擴展爲類型爲 int 的整數常量表達式。

庫宏

下面列出了頭文件 errno.h 中定義的宏:

序號 宏 & 描述
1 extern int errno 這是經過系統調用設置的宏,在錯誤事件中的某些庫函數代表了什麼發生了錯誤。
2 EDOM Domain Error 這個宏表示一個域錯誤,它在輸入參數超出數學函數定義的域時發生,errno 被設置爲 EDOM。
3 ERANGE Range Error 這個宏表示一個範圍錯誤,它在輸入參數超出數學函數定義的範圍時發生,errno 被設置爲 ERANGE。

<float.h>

簡介

C 標準庫的 float.h 頭文件包含了一組與浮點值相關的依賴於平臺的常量。這些常量是由 ANSI C 提出的,這讓程序更具備可移植性。在講解這些常量以前,最好先弄清楚浮點數是由下面四個元素組成的:

組件 組件描述
S 符號 ( +/- )
b 指數表示的基數,2 表示二進制,10 表示十進制,16 表示十六進制,等等...
e 指數,一個介於最小值 emin 和最大值 emax 之間的整數。
p 精度,基數 b 的有效位數

基於以上 4 個組成部分,一個浮點數的值以下:

floating-point = ( S ) p x be

floating-point = (+/-) precision x baseexponent

庫宏

下面的值是特定實現的,且是經過 #define 指令來定義的,這些值都不得低於下邊所給出的值。請注意,全部的實例 FLT 是指類型 float,DBL 是指類型 double,LDBL 是指類型 long double。

描述
FLT_ROUNDS 定義浮點加法的舍入模式,它能夠是下列任何一個值:
-1 - 沒法肯定
0 - 趨向於零
1 - 去最近的值
2 - 趨向於正無窮
3 - 趨向於負無窮
FLT_RADIX 2 這個宏定義了指數表示的基數。
基數 2 表示二進制,
基數 10 表示十進制,
基數 16 表示十六進制。
FLT_MANT_DIG
DBL_MANT_DIG
LDBL_MANT_DIG
這些宏定義了 FLT_RADIX 基數中的位數。
FLT_DIG 6
DBL_DIG 10
LDBL_DIG 10
這些宏定義了舍入後不會改變表示的十進制數字的最大值(基數 10)。
FLT_MIN_EXP
DBL_MIN_EXP
LDBL_MIN_EXP
這些宏定義了基數爲 FLT_RADIX 時的指數的最小負整數值。
FLT_MIN_10_EXP -37
DBL_MIN_10_EXP -37
LDBL_MIN_10_EXP -37
這些宏定義了基數爲 10 時的指數的最小負整數值。
FLT_MAX_EXP
DBL_MAX_EXP
LDBL_MAX_EXP
這些宏定義了基數爲 FLT_RADIX 時的指數的最大整數值。
FLT_MAX_10_EXP +37
DBL_MAX_10_EXP +37
LDBL_MAX_10_EXP +37
這些宏定義了基數爲 10 時的指數的最大整數值。
FLT_MAX 1E+37
DBL_MAX 1E+37
LDBL_MAX 1E+37
這些宏定義最大的有限浮點值。
FLT_EPSILON 1E-5
DBL_EPSILON 1E-9
LDBL_EPSILON 1E-9
這些宏定義了可表示的最小有效數字。
FLT_MIN 1E-37
DBL_MIN 1E-37
LDBL_MIN 1E-37
這些宏定義了最小的浮點值。

下面的實例演示了 float.h 文件中定義的一些常量的使用。

#include <stdio.h>
#include <float.h>

int main()
{
   printf("浮點的最大值 = %.10e\n", FLT_MAX);
   printf("浮點數最小值 = %.10e\n", FLT_MIN);

   printf("數字的位數 = %.10e\n", FLT_MANT_DIG);
}

讓咱們編譯和運行上面的程序,這將產生下列結果:

浮點的最大值 = 3.4028234664e+38
浮點數最小值 = 1.1754943508e-38
數字的位數 = 7.2996655210e-312

<limits.h>

簡介

limits.h 頭文件決定了各類變量類型的各類屬性。定義在該頭文件中的宏限制了各類變量類型(好比 char、int 和 long)的值。

這些限制指定了變量不能存儲任何超出這些限制的值,例如一個無符號能夠存儲的最大值是 255。

庫宏

下面的值是特定實現的,且是經過 #define 指令來定義的,這些值都不得低於下邊所給出的值。

描述
CHAR_BIT 8 定義一個字節的比特數。
SCHAR_MIN -128 定義一個有符號字符的最小值。
SCHAR_MAX 127 定義一個有符號字符的最大值。
UCHAR_MAX 255 定義一個無符號字符的最大值。
CHAR_MIN 0 定義類型 char 的最小值,若是 char 表示負值,則它的值等於 SCHAR_MIN,不然等於 0。
CHAR_MAX 127 定義類型 char 的最大值,若是 char 表示負值,則它的值等於 SCHAR_MAX,不然等於 UCHAR_MAX。
MB_LEN_MAX 1 定義多字節字符中的最大字節數。
SHRT_MIN -32768 定義一個短整型的最小值。
SHRT_MAX +32767 定義一個短整型的最大值。
USHRT_MAX 65535 定義一個無符號短整型的最大值。
INT_MIN -32768 定義一個整型的最小值。
INT_MAX +32767 定義一個整型的最大值。
UINT_MAX 65535 定義一個無符號整型的最大值。
LONG_MIN -2147483648 定義一個長整型的最小值。
LONG_MAX +2147483647 定義一個長整型的最大值。
ULONG_MAX 4294967295 定義一個無符號長整型的最大值。

下面的實例演示了 limit.h 文件中定義的一些常量的使用。

#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);
}

這將產生下列結果:

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 = -32768
The maximum value of INT = 32767
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -2147483648
The maximum value of LONG = 2147483647


參考自:https://www.runoob.com/cprogramming/c-tutorial.html

相關文章
相關標籤/搜索