我的处理器上C中的int,short和其他数据类型的范围?

时间:2014-02-12 02:14:17

标签: c variables size range

我正在读一本旧的C书并根据那个

int范围值-32768到+32767。

当我的机器可以容纳比该限制更大的int时,如何找到特定于我的机器的这些数据类型(short,int,long,double,float)的范围?

有什么办法吗?

3 个答案:

答案 0 :(得分:4)

this开始,看看脚注:

  • 实际值取决于特定系统和库实现,但应反映目标平台中这些类型的限制。

如果您在系统上运行以下代码,它应该提供一些见解,因为返回的值可能与上述链接中的值不同或不同。

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

    int main() {
        printf("\t\tUsing <limits.h> library definitions...\n");
        printf("CHAR\n");
        printf("signed char max: %d\n", SCHAR_MAX);
        printf("unsigned char max: %u\n", UCHAR_MAX); // Note use of u, formatting output
        printf("signed char min: %d\n", SCHAR_MIN);
        printf("SHORT\n");
        printf("signed short min: %d\n", SHRT_MIN);
        printf("signed short max: %d\n", SHRT_MAX);
        printf("unsigned short max: %d\n", USHRT_MAX);
        printf("INT\n");
        printf("signed int max: %d\n", INT_MAX);
        printf("unsigned int max: %u\n", UINT_MAX); 
        printf("signed int min: %d\n", INT_MIN);
        printf("LONG\n");
        printf("signed long max: %d\n", LONG_MAX);
        printf("unsigned long max: %u\n", ULONG_MAX);
        printf("signed long min: %d\n", LONG_MIN);
        printf("FLOAT\n");
        printf("signed float max: %e\n", FLT_MAX);
        printf("signed float min: %e\n", FLT_MIN);
        printf("DOUBLE\n");
        printf("signed double max: %e\n", DBL_MAX);
        printf("signed double min: %e\n", DBL_MIN);
        return 0;
}

答案 1 :(得分:2)

我希望我能正确理解你的问题。

您可以查看limits.h,在那里可以找到整数类型的大小。看看here

  

此标题定义具有基本积分限制的常量   所使用的特定系统和编译器实现的类型。

答案 2 :(得分:1)

标题<limits.h>提供了这些信息,<stdint.h>允许您指定特定的宽度整数:

INT_MAX
INT_MIN
int32_t value; // to have an integer of exactly 32 bits