c语言中的整数和浮点数

整数:用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

正文完
 0
评论(没有评论)