目录搜索
AlgorithmsAlgorithms(算法)bsearchbsearch_sqsortqsort_sAtomic operationsAtomic operations library(原子操作库)ATOMIC_*_LOCK_FREEatomic_compare_exchange_strongatomic_compare_exchange_strong_explicitatomic_compare_exchange_weakatomic_compare_exchange_weak_explicitatomic_exchangeatomic_exchange_explicitatomic_fetch_addatomic_fetch_add_explicitatomic_fetch_andatomic_fetch_and_explicitatomic_fetch_oratomic_fetch_or_explicitatomic_fetch_subatomic_fetch_sub_explicitatomic_fetch_xoratomic_fetch_xor_explicitatomic_flagatomic_flag_clearatomic_flag_clear_explicitATOMIC_FLAG_INITatomic_flag_test_and_setatomic_flag_test_and_set_explicitatomic_initatomic_is_lock_freeatomic_loadatomic_load_explicitatomic_signal_fenceatomic_storeatomic_store_explicitatomic_thread_fence(线程围栏)ATOMIC_VAR_INITkill_dependencymemory_order(内存排序)C keywordsauto(自动存储)break(跳出循环)C keywords(关键词)casecharconst(常量修饰符)continuedefault(预设运算式)dodouble(双精度浮点型)elseenum(枚举类型)extern(全局变量)float(浮点数)forfortrangoto(goto语句)if(if语句)inline(行内函式)intlong(长整型)register(寄存器变量)restrict( restrict类型限定符)returnshortsignedsizeof(sizeof运算符)static(静态变量)struct(结构体)switch(switch语句)typedef(typedef关键字)union(联合体)unsigned(无符号)void(空类型)volatile(volatile变量)while(while语句)_Alignas_Alignof_Atomic_Bool_Complex_Generic_Imaginary_Noreturn_Static_assert_Thread_localC language#define directive#elif directive#else directive#endif directive#error directive#if directive#ifdef directive#ifndef directive#include directive#line directive#pragma directivealignas(对齐指定符)Alternative operators and tokens(替代运算符和令牌)AnalyzabilityArithmetic operatorsArithmetic typesArray declaration(数组声明)Array initialization(阵列初始化)ASCII ChartAssignment operators(赋值运算符)types(atomic类型限定符)Basic conceptsBit fields(位域)break statementC languageC Operator Precedencecast operatorcharacter constant(字符字面量)Comments(注释符)Comparison operators(比较运算符)compound literals(符合字面量)Conditional inclusion(条件包含)Conformance(一致性)const type qualifier(const 限定符)Constant expressions(常量表达)continue statementDeclarations(声明)do-while loopEnumerations(枚举类型)Escape sequences(转义字符)Expressions(表达式)External and tentative definitions(外部和暂定的定义)File scope(文件范围)floating constant(浮点常量)for loopFunction declarations(函数声明)Function definitions(函数声明)FunctionsGeneric selection泛型选择goto statementIdentifier(标示符)if statementImplicit conversions(隐式转换)Increment/decrement operators(前置/后置操作符)Initialization(初始化)inline function specifier(内联函式)integer constantLifetime(生命期)Logical operators(逻辑运算符)Lookup and name spacesMain function(主函式)Member access operators(会员接入运营商)Memory modelObjects and alignment(字节对齐)Order of evaluation(评估顺序)Other operatorsPhases of translation(翻译阶段)Pointer declarationPreprocessor(预处理)restrict type qualifier(restrict类型限定符)return statementScalar initialization(标量类型初始化)Scope(范围)sizeof operator(sizeof运算符)Statements(陈述)static assert declaration(静态断言声明)Static storage duration(静态存储周期)Storage-class specifiers(存储类说明符)string literals(字符串字面量)Struct and union initialization(结构体与联合体初始化)Struct declaration(结构体声明)switch statementThread storage duration(线程存储时间)TypeType(类型)Typedef declaration(Typedef声明)Undefined behavior(未定义行为)Union declaration(联合体声明)Value categories(值类别)Variadic arguments(变长参数宏)volatile type qualifier(volatile 类型限定符)while loop_Alignof operator_Noreturn function specifierDate and timeasctime(asctime函数)asctime_sclockCLOCKS_PER_SECclock_tctime(ctime函数)ctime_sDate and time utilities(日期和时间库)difftime(计算两个时间的间隔)gmtimegmtime_slocaltimelocaltime_smktime(将时间结构数据转换成经过的秒数的函数)strftime(格式化输出时间函数)timetimespectimespec_gettime_ttmwcsftime(格式化时间宽字符)Dynamic memory managementaligned_allocC memory management library(内存管理库)callocfree(释放动态分配空间的函数)malloc(动态分配内存空间的函数)realloc(重新分配内存空间的函数)Error handlingabort_handler_sassert(断言)constraint_handler_terrno(错误报告)Error handling(错误处理)Error numbers(错误个数)ignore_handler_sset_constraint_handler_sstatic_assertFile input/outputclearerr(清除/复位)fclosefeofferrorfflush(清空文件缓冲区)fgetcfgetposfgetsfgetwcfgetwsFile input/outputfopenfopen_sfprintffprintf_sfputcfputsfputwcfputwsfreadfreopenfreopen_sfscanffscanf_sfseekfsetposftellfwidefwprintffwprintf_sfwritefwscanffwscanf_sgetcgetchargetsgets_sgetwcharperrorprintfprintf_sputcputcharputsputwcputwcharremoverenamerewindscanfscanf_ssetbufsetvbufsnprintfsprintfsscanfsscanf_sswprintfswprintf_sswscanfswscanf_stmpfiletmpfile_stmpnamtmpnam_sungetcungetwcvfprintfvfprintf_svfscanfvfscanf_svfwprintfvfwprintf_svfwscanfvfwscanf_svprintfvprintf_svscanfvscanf_svsnprintfvsprintfvsscanfvsscanf_svswprintfvswprintf_svswscanfvswscanf_svwprintfvwprintf_svwscanfvwscanf_swprintfwprintf_swscanfwscanf_sLocalization supportlconvLC_ALLLC_COLLATELC_CTYPELC_MONETARYLC_NUMERICLC_TIMElocaleconvLocalization supportsetlocaleNumericsabsacosacosfacoshacoshfacoshlacoslasinasinfasinhasinhfasinhlasinlatanatan2atan2fatan2latanfatanhatanhfatanhlatanlcabscabsfcabslcacoscacosfcacoshcacoshfcacoshlcacoslcargcargfcarglcasincasinfcasinhcasinhfcasinhlcasinlcatancatanfcatanhcatanhfcatanhlcatanlcbrtcbrtfcbrtlccosccosfccoshccoshfccoshlccoslceilceilfceillcexpcexpfcexplcimagcimagfcimaglclogclogfcloglCMPLXCMPLXFCMPLXLCommon mathematical functionscomplexComplex number arithmeticconjconjfconjlcopysigncopysignfcopysignlcoscosfcoshcoshfcoshlcoslcpowcpowfcpowlcprojcprojfcprojlcrealcrealfcreallcsincsinfcsinhcsinhfcsinhlcsinlcsqrtcsqrtfcsqrtlctanctanfctanhctanhfctanhlctanldivdouble_terferfcerfcferfclerfferflexpexp2exp2fexp2lexpfexplexpm1expm1fexpm1lfabsfabsffabslfdimfeclearexceptfegetenvfegetexceptflagfegetroundfeholdexceptferaiseexceptfesetenvfesetexceptflagfesetroundfetestexceptfeupdateenvFE_ALL_EXCEPTFE_DFL_ENVFE_DIVBYZEROFE_DOWNWARDFE_INEXACTFE_INVALIDFE_OVERFLOWFE_TONEARESTFE_TOWARDZEROFE_UNDERFLOWFE_UPWARDFloating-point environmentfloat_tfloorfloorffloorlfmafmaffmalfmaxfmaxffmaxlfminfminffminlfmodfmodffmodlfpclassifyFP_INFINITEFP_NANFP_NORMALFP_SUBNORMALFP_ZEROfrexpfrexpffrexplHUGE_VALHUGE_VALFHUGE_VALLhypothypotfhypotlIilogbilogbfilogblimaginaryimaxabsimaxdivINFINITYisfiniteisgreaterisgreaterequalisinfislessislessequalislessgreaterisnanisnormalisunorderedlabsldexpldexpfldexplldivlgammalgammaflgammalllabslldivllrintllrintfllrintlllroundllroundfllroundlloglog10log10flog10llog1plog1pflog1pllog2log2flog2llogblogbflogbllogflogllrintlrintflrintllroundlroundflroundlMATH_ERREXCEPTmath_errhandlingMATH_ERRNOmodfmodffmodflnanNANnanfnanlnearbyintnearbyintfnearbyintlnextafternextafterfnextafterlnexttowardnexttowardfnexttowardlNumericspowpowfpowlPseudo-random number generationrandRAND_MAXremainderremainderfremainderlremquoremquofremquolrintrintfrintlroundroundfroundlscalblnscalblnfscalblnlscalbnscalbnfscalbnlsignbitsinsinfsinhsinhfsinhlsinlsqrtsqrtfsqrtlsrandtantanftanhtanhftanhltanltgammatgammaftgammaltrunctruncftrunclType-generic math_Complex_I_Imaginary_IProgram supportabortatexitat_quick_exitexitEXIT_FAILUREEXIT_SUCCESSgetenvgetenv_sjmp_buflongjmpProgram support utilitiesquick_exitraisesetjmpSIGABRTSIGFPESIGILLSIGINTsignalSIGSEGVSIGTERMsig_atomic_tSIG_DFLSIG_ERRSIG_IGNsystem_ExitStringsatofatoiatolatollbtowcc16rtombc32rtombchar16_tchar32_tisalnumisalphaisblankiscntrlisdigitisgraphislowerisprintispunctisspaceisupperiswalnumiswalphaiswblankiswcntrliswctypeiswdigitiswgraphiswloweriswprintiswpunctiswspaceiswupperiswxdigitisxdigitmblenmbrlenmbrtoc16mbrtoc32mbrtowcmbsinitmbsrtowcsmbsrtowcs_smbstate_tmbstowcsmbstowcs_smbtowcmemchrmemcmpmemcpymemcpy_smemmovememmove_smemsetmemset_sNull-terminated byte stringsNull-terminated multibyte stringsNull-terminated wide stringsstrcatstrcat_sstrchrstrcmpstrcollstrcpystrcpy_sstrcspnstrerrorstrerrorlen_sstrerror_sStrings librarystrlenstrncatThread supportcall_oncecnd_broadcastcnd_destroycnd_initcnd_signalcnd_timedwaitcnd_waitmtx_destroymtx_initmtx_lockmtx_plainmtx_recursivemtx_timedmtx_timedlockmtx_trylockmtx_unlockonce_flagONCE_FLAG_INITthrd_busythrd_createthrd_currentthrd_detachthrd_equalthrd_errorthrd_exitthrd_jointhrd_nomemthrd_sleepthrd_successthrd_timedoutthrd_yieldThread support librarythread_localtss_createtss_deleteTSS_DTOR_ITERATIONStss_gettss_setType supportBoolean type support libraryFixed width integer typesFLT_EVAL_METHODFLT_ROUNDSmax_align_tNULLNumeric limitsoffsetofptrdiff_tsize_tType supportVariadic functionsVariadic functionsva_argva_copyva_endva_listva_start
文字

库类型的限制

| 在头文件<stdint.h>中定义 |

|:----|

| PTRDIFF_MIN(C99)| ptrdiff_t类型(宏常量)|的对象的最小值

| PTRDIFF_MAX(C99)| ptrdiff_t类型(宏常量)|的对象的最大值

| SIZE_MAX(C99)| size_t类型(宏常量)|的对象的最大值

| SIG_ATOMIC_MIN(C99)| sig_atomic_t类型(宏常量)|的对象的最小值

| SIG_ATOMIC_MAX(C99)| sig_atomic_t类型(宏常量)|的对象的最大值

| 在头文件<wchar.h>中定义 |

| WCHAR_MIN(C99)| wchar_t类型(宏常量)|的对象的最小值

| WCHAR_MAX(C99)| wchar_t类型(宏常量)|的对象的最大值

| WINT_MIN(C99)| wint_t类型(宏常量)|的对象的最小值

| WINT_MAX(C99)| wint_t类型(宏常量)|的对象的最大值

#include <stdio.h>#include <stdint.h>#include <wchar.h>
 int main(void){    printf("PTRDIFF_MIN    = %td\n", PTRDIFF_MIN);    printf("PTRDIFF_MAX    = %+td\n", PTRDIFF_MAX);    printf("SIZE_MAX       = %zu\n", SIZE_MAX);    printf("SIG_ATOMIC_MIN = %+jd\n",(intmax_t)SIG_ATOMIC_MIN);    printf("SIG_ATOMIC_MAX = %+jd\n",(intmax_t)SIG_ATOMIC_MAX);    printf("WCHAR_MIN      = %+jd\n",(intmax_t)WCHAR_MIN);    printf("WCHAR_MAX      = %+jd\n",(intmax_t)WCHAR_MAX);    printf("WINT_MIN       = %jd\n", (intmax_t)WINT_MIN);    printf("WINT_MAX       = %jd\n", (intmax_t)WINT_MAX);}

可能的输出:

PTRDIFF_MIN    = -9223372036854775808PTRDIFF_MAX    = +9223372036854775807SIZE_MAX       = 18446744073709551615SIG_ATOMIC_MIN = -2147483648SIG_ATOMIC_MAX = +2147483647WCHAR_MIN      = -2147483648WCHAR_MAX      = +2147483647WINT_MIN       = 0WINT_MAX       = 4294967295

整数类型的限制

| 在头文件<limits.h>中定义 |

|:----|

| CHAR_BIT | 字节中的位数(宏常量)|

| MB_LEN_MAX | 多字节字符中的最大字节数(宏常量)|

| CHAR_MIN | char(宏常量)|的最小值

| CHAR_MAX | char(宏常量)|的最大值

| SCHAR_MINSHRT_MININT_MINLONG_MINLLONG_MIN(C99)| signed char,short,int,long和long long的最小值(宏常量)|

| SCHAR_MAXSHRT_MAXINT_MAXLONG_MAXLLONG_MAX(C99)| signed char,short,int,long和long long的最大值(宏常量)|

| UCHAR_MAXUSHRT_MAXUINT_MAXULONG_MAXULLONG_MAX(C99)| unsigned char,unsigned short,unsigned int,unsigned long和unsigned long long的最大值(宏常量)|

#include <stdio.h>#include <limits.h>
 int main(void){   
    printf("CHAR_BIT   = %d\n", CHAR_BIT);    printf("MB_LEN_MAX = %d\n", MB_LEN_MAX);    printf("\n"); 
    printf("CHAR_MIN   = %+d\n", CHAR_MIN);    printf("CHAR_MAX   = %+d\n", CHAR_MAX);    printf("SCHAR_MIN  = %+d\n", SCHAR_MIN);    printf("SCHAR_MAX  = %+d\n", SCHAR_MAX);    printf("UCHAR_MAX  = %u\n",  UCHAR_MAX);    printf("\n"); 
    printf("SHRT_MIN   = %+d\n", SHRT_MIN);    printf("SHRT_MAX   = %+d\n", SHRT_MAX);    printf("USHRT_MAX  = %u\n",  USHRT_MAX);    printf("\n"); 
    printf("INT_MIN    = %+d\n", INT_MIN);    printf("INT_MAX    = %+d\n", INT_MAX);    printf("UINT_MAX   = %u\n",  UINT_MAX);    printf("\n"); 
    printf("LONG_MIN   = %+ld\n", LONG_MIN);    printf("LONG_MAX   = %+ld\n", LONG_MAX);    printf("ULONG_MAX  = %lu\n",  ULONG_MAX);    printf("\n"); 
    printf("LLONG_MIN  = %+lld\n", LLONG_MIN);    printf("LLONG_MAX  = %+lld\n", LLONG_MAX);    printf("ULLONG_MAX = %llu\n",  ULLONG_MAX);    printf("\n");}

可能的输出:

CHAR_BIT   = 8MB_LEN_MAX = 16
 CHAR_MIN   = -128CHAR_MAX   = +127SCHAR_MIN  = -128SCHAR_MAX  = +127UCHAR_MAX  = 255
 SHRT_MIN   = -32768SHRT_MAX   = +32767USHRT_MAX  = 65535
 INT_MIN    = -2147483648INT_MAX    = +2147483647UINT_MAX   = 4294967295
 LONG_MIN   = -9223372036854775808LONG_MAX   = +9223372036854775807ULONG_MAX  = 18446744073709551615
 LLONG_MIN  = -9223372036854775808LLONG_MAX  = +9223372036854775807ULLONG_MAX = 18446744073709551615

浮点类型的限制

| 在头文件<float.h> |中定义

|:----|

| FLT_RADIX | 所有三个浮点类型(宏常量)|的表示使用的基数(整数基数)

| DECIMAL_DIG(C99)| 从long double转换为decimal,至少DECIMAL_DIG digits并返回long double是标识转换:这是序列化/反序列化long double(宏常量)所需的十进制精度。

| FLT_DECIMAL_DIGDBL_DECIMAL_DIGLDBL_DECIMAL_DIG(C11)| 从float / double / long double到decimal的转换至少为FLT_DECIMAL_DIG / DBL_DECIMAL_DIG / LDBL_DECIMAL_DIG数字,后面是标识转换:这是序列化/反序列化浮点值所需的十进制精度。分别定义为至少6,10和10,或者IEEE浮点数为9,IEEE双精度为17。(另请参阅C ++ analog max_digits10)(宏常量)|

| FLT_MINDBL_MINLDBL_MIN | float,double和long double的最小值,标准化值,正值分别为(宏常量)|

| FLT_TRUE_MINDBL_TRUE_MINLDBL_TRUE_MIN(C11)| float,double和long double的最小正值分别为(宏常量)|

| FLT_MAXDBL_MAXLDBL_MAX | float,double和long double的最大值(宏常量)|

| FLT_EPSILONDBL_EPSILONLDBL_EPSILON | 1.0和浮点型,双精度型和长双精度型的下一个可表示值之间的差值(宏常数)|

| FLT_DIGDBL_DIGLDBL_DIG | 保证保留在文本中的小数位数 - > float / double / long double  - >文本往返不会因四舍五入或溢出而发生变化(详见C ++模拟位数10)(宏常量)|

| FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG | 浮点尾数中可以表示的基FLT_RADIX数字的数量,并且可以分别表示浮点,双精度和长精度的精度(宏常数)|

| FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP | 最小的负整数,使FLT_RADIX小于该整数的幂乘1是一个标准化的float,double和long double(宏常量)|

| FLT_MIN_10_EXPDBL_MIN_10_EXPLDBL_MIN_10_EXP | 最小负整数,使得10次幂小于该整数时,分别为标准化的float,double和long double(宏常量)|

| FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP | 最大正整数,使得FLT_RADIX由小于该整数的幂乘1产生一个归一化的float,double和long double(宏常量)|

| FLT_MAX_10_EXPDBL_MAX_10_EXPLDBL_MAX_10_EXP | 最大正整数,使得由小于该整数的幂次提升的10个是分别为标准化的float,double和long double(宏常量)|

| FLT_ROUNDS | 四舍五入浮点运算模式,等于float_round_style(宏常量)|

| FLT_EVAL_METHOD(C99)| 对于中间结果使用扩展精度:0未使用,1使用double来代替float,2使用long double(宏常量)|

| FLT_HAS_SUBNORMDBL_HAS_SUBNORMLDBL_HAS_SUBNORM(C11)| 该类型是否支持低于正常(非正常)数字:-1不确定,0不存在,1存在(宏常量)|

#include <stdio.h>#include <float.h> #include <math.h>
 int main(void){    printf("FLT_RADIX    = %d\n", FLT_RADIX);    printf("DECIMAL_DIG  = %d\n", DECIMAL_DIG);    printf("FLT_MIN      = %e\n", FLT_MIN);    printf("FLT_MAX      = %e\n", FLT_MAX);    printf("FLT_EPSILON  = %e\n", FLT_EPSILON);    printf("FLT_DIG      = %d\n", FLT_DIG);    printf("FLT_MANT_DIG = %d\n", FLT_MANT_DIG);    printf("FLT_MIN_EXP  = %d\n",  FLT_MIN_EXP);    printf("FLT_MIN_10_EXP  = %d\n",  FLT_MIN_10_EXP);    printf("FLT_MAX_EXP     = %d\n",  FLT_MAX_EXP);    printf("FLT_MAX_10_EXP  = %d\n",  FLT_MAX_10_EXP);    printf("FLT_ROUNDS      = %d\n",  FLT_ROUNDS);    printf("FLT_EVAL_METHOD = %d\n",  FLT_EVAL_METHOD);    printf("FLT_HAS_SUBNORM = %d\n",  FLT_HAS_SUBNORM);}

可能的输出:

FLT_RADIX    = 2DECIMAL_DIG  = 37FLT_MIN      = 1.175494e-38FLT_MAX      = 3.402823e+38FLT_EPSILON  = 1.192093e-07FLT_DIG      = 6FLT_MANT_DIG = 24FLT_MIN_EXP  = -125FLT_MIN_10_EXP  = -37FLT_MAX_EXP     = 128FLT_MAX_10_EXP  = 38FLT_ROUNDS      = 1FLT_EVAL_METHOD = 1FLT_HAS_SUBNORM = 1
上一篇:下一篇: