首页 文章

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

提问于
浏览
3

我正在读一本旧的C书,据此而言

int范围值从-32768到32767 .

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

那有什么方法吗?

3 回答

  • 1

    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;
    }
    
  • 2

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

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

    此标头定义了常量,其中包含特定系统和使用的编译器实现的基本积分类型的限制 .

  • 4

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

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

相关问题