整数:用int 或 long long
- int:-21亿到21亿用
- long:可能和int取值范围一样
- long long:更大的整数用
#include <stdio.h>
#include <limits.h>
int main() {
printf("Character types:\n");
printf("CHAR_BIT: %d\n", CHAR_BIT);
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("\nShort integer types:\n");
printf("SHRT_MIN: %d\n", SHRT_MIN);
printf("SHRT_MAX: %d\n", SHRT_MAX);
printf("USHRT_MAX: %u\n", USHRT_MAX);
printf("\nInteger types:\n");
printf("INT_MIN: %d\n", INT_MIN);
printf("INT_MAX: %d\n", INT_MAX);
printf("UINT_MAX: %u\n", UINT_MAX);
printf("\nLong integer types:\n");
printf("LONG_MIN: %ld\n", LONG_MIN);
printf("LONG_MAX: %ld\n", LONG_MAX);
printf("ULONG_MAX: %lu\n", ULONG_MAX);
printf("\nLong long integer types:\n");
printf("LLONG_MIN: %lld\n", LLONG_MIN);
printf("LLONG_MAX: %lld\n", LLONG_MAX);
printf("ULLONG_MAX: %llu\n", ULLONG_MAX);
return 0;
}
win10 64位,MinGW 11.0 w64下的输出:
Character types:
CHAR_BIT: 8
CHAR_MIN: -128
CHAR_MAX: 127
SCHAR_MIN: -128
SCHAR_MAX: 127
UCHAR_MAX: 255
Short integer types:
SHRT_MIN: -32768
SHRT_MAX: 32767
USHRT_MAX: 65535
Integer types:
INT_MIN: -2147483648
INT_MAX: 2147483647
UINT_MAX: 4294967295
Long integer types:
LONG_MIN: -2147483648
LONG_MAX: 2147483647
ULONG_MAX: 4294967295
Long long integer types:
LLONG_MIN: -9223372036854775808
LLONG_MAX: 9223372036854775807
ULLONG_MAX: 18446744073709551615
浮点数:一般用double就ok
- float:十进制精度只有6,一般情况下没使用价值
- double:十进制精度15
- long double:十进制精度18
#include <stdio.h>
#include <float.h>
int main() {
printf("Single precision (float):\n");
printf("FLT_RADIX:浮点数的基数(通常为2)。\n");
printf("FLT_RADIX: %d\n", FLT_RADIX);
printf("FLT_MANT_DIG:float 类型的有效位数。\n");
printf("FLT_MANT_DIG: %d\n", FLT_MANT_DIG);
printf("FLT_DIG:float 类型的十进制数精度,即能保证不失真的最大十进制位数。\n");
printf("FLT_DIG: %d\n", FLT_DIG);
printf("FLT_MIN_EXP:float 类型的最小负指数(以基数为底)。\n");
printf("FLT_MIN_EXP: %d\n", FLT_MIN_EXP);
printf("FLT_MIN_10_EXP:float 类型的最小负十进制指数。\n");
printf("FLT_MIN_10_EXP: %d\n", FLT_MIN_10_EXP);
printf("FLT_MAX_EXP:float 类型的最大指数(以基数为底)。\n");
printf("FLT_MAX_EXP: %d\n", FLT_MAX_EXP);
printf("FLT_MAX_10_EXP:float 类型的最大十进制指数。\n");
printf("FLT_MAX_10_EXP: %d\n", FLT_MAX_10_EXP);
printf("FLT_MAX:float 类型的最大正值。\n");
printf("FLT_MAX: %e\n", FLT_MAX);
printf("FLT_MIN:float 类型的最小正值。\n");
printf("FLT_MIN: %e\n", FLT_MIN);
printf("FLT_EPSILON:float 类型的相对误差,即1.0和比1.0大的最小浮点数之差。\n");
printf("FLT_EPSILON: %e\n", FLT_EPSILON);
printf("\nDouble precision (double):\n");
printf("DBL_MANT_DIG:double 类型的有效位数。 \n");
printf("DBL_MANT_DIG: %d\n", DBL_MANT_DIG);
printf("DBL_DIG:double 类型的十进制数精度。\n");
printf("DBL_DIG: %d\n", DBL_DIG);
printf("DBL_MIN_EXP:double 类型的最小负指数(以基数为底)。\n");
printf("DBL_MIN_EXP: %d\n", DBL_MIN_EXP);
printf("DBL_MIN_10_EXP:double 类型的最小负十进制指数。 \n");
printf("DBL_MIN_10_EXP: %d\n", DBL_MIN_10_EXP);
printf("DBL_MAX_EXP:double 类型的最大指数(以基数为底)。 \n");
printf("DBL_MAX_EXP: %d\n", DBL_MAX_EXP);
printf("DBL_MAX_10_EXP:double 类型的最大十进制指数。 \n");
printf("DBL_MAX_10_EXP: %d\n", DBL_MAX_10_EXP);
printf("DBL_MAX:double 类型的最大正值。 \n");
printf("DBL_MAX: %e\n", DBL_MAX);
printf("DBL_MIN:double 类型的最小正值。 \n");
printf("DBL_MIN: %e\n", DBL_MIN);
printf("DBL_EPSILON:double 类型的相对误差。 \n");
printf("DBL_EPSILON: %e\n", DBL_EPSILON);
printf("\nExtended precision (long double):\n");
printf("LDBL_MANT_DIG:long double 类型的有效位数。 \n");
printf("LDBL_MANT_DIG: %d\n", LDBL_MANT_DIG);
printf("LDBL_DIG:long double 类型的十进制数精度。 \n");
printf("LDBL_DIG: %d\n", LDBL_DIG);
printf("LDBL_MIN_EXP:long double 类型的最小负指数(以基数为底)。 \n");
printf("LDBL_MIN_EXP: %d\n", LDBL_MIN_EXP);
printf("LDBL_MIN_10_EXP:long double 类型的最小负十进制指数。 \n");
printf("LDBL_MIN_10_EXP: %d\n", LDBL_MIN_10_EXP);
printf("LDBL_MAX_EXP:long double 类型的最大指数(以基数为底)。 \n");
printf("LDBL_MAX_EXP: %d\n", LDBL_MAX_EXP);
printf("LDBL_MAX_10_EXP:long double 类型的最大十进制指数。 \n");
printf("LDBL_MAX_10_EXP: %d\n", LDBL_MAX_10_EXP);
printf("LDBL_MAX:long double 类型的最大正值。 \n");
printf("LDBL_MAX: %Le\n", LDBL_MAX);
printf("LDBL_MIN:long double 类型的最小正值。 \n");
printf("LDBL_MIN: %Le\n", LDBL_MIN);
printf("LDBL_EPSILON:long double 类型的相对误差。 \n");
printf("LDBL_EPSILON: %Le\n", LDBL_EPSILON);
return 0;
}
win10 64位,MinGW 11.0 w64下的输出:
Single precision (float):
FLT_RADIX:浮点数的基数(通常为2)。
FLT_RADIX: 2
FLT_MANT_DIG:float 类型的有效位数。
FLT_MANT_DIG: 24
FLT_DIG:float 类型的十进制数精度,即能保证不失真的最大十进制位数。
FLT_DIG: 6
FLT_MIN_EXP:float 类型的最小负指数(以基数为底)。
FLT_MIN_EXP: -125
FLT_MIN_10_EXP:float 类型的最小负十进制指数。
FLT_MIN_10_EXP: -37
FLT_MAX_EXP:float 类型的最大指数(以基数为底)。
FLT_MAX_EXP: 128
FLT_MAX_10_EXP:float 类型的最大十进制指数。
FLT_MAX_10_EXP: 38
FLT_MAX:float 类型的最大正值。
FLT_MAX: 3.402823e+38
FLT_MIN:float 类型的最小正值。
FLT_MIN: 1.175494e-38
FLT_EPSILON:float 类型的相对误差,即1.0和比1.0大的最小浮点数之差。
FLT_EPSILON: 1.192093e-07
Double precision (double):
DBL_MANT_DIG:double 类型的有效位数。
DBL_MANT_DIG: 53
DBL_DIG:double 类型的十进制数精度。
DBL_DIG: 15
DBL_MIN_EXP:double 类型的最小负指数(以基数为底)。
DBL_MIN_EXP: -1021
DBL_MIN_10_EXP:double 类型的最小负十进制指数。
DBL_MIN_10_EXP: -307
DBL_MAX_EXP:double 类型的最大指数(以基数为底)。
DBL_MAX_EXP: 1024
DBL_MAX_10_EXP:double 类型的最大十进制指数。
DBL_MAX_10_EXP: 308
DBL_MAX:double 类型的最大正值。
DBL_MAX: 1.797693e+308
DBL_MIN:double 类型的最小正值。
DBL_MIN: 2.225074e-308
DBL_EPSILON:double 类型的相对误差。
DBL_EPSILON: 2.220446e-16
Extended precision (long double):
LDBL_MANT_DIG:long double 类型的有效位数。
LDBL_MANT_DIG: 64
LDBL_DIG:long double 类型的十进制数精度。
LDBL_DIG: 18
LDBL_MIN_EXP:long double 类型的最小负指数(以基数为底)。
LDBL_MIN_EXP: -16381
LDBL_MIN_10_EXP:long double 类型的最小负十进制指数。
LDBL_MIN_10_EXP: -4931
LDBL_MAX_EXP:long double 类型的最大指数(以基数为底)。
LDBL_MAX_EXP: 16384
LDBL_MAX_10_EXP:long double 类型的最大十进制指数。
LDBL_MAX_10_EXP: 4932
LDBL_MAX:long double 类型的最大正值。
LDBL_MAX: 1.189731e+4932
LDBL_MIN:long double 类型的最小正值。
LDBL_MIN: 3.362103e-4932
LDBL_EPSILON:long double 类型的相对误差。
LDBL_EPSILON: 1.084202e-19
正文完