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

标签 c variables size range

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

int 范围值从 -32768 到 +32767。

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

有什么方法吗?

最佳答案

来自 this ,看看脚注:

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

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

    #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;
}

关于c - 我处理器上 C 中的 int、short 和其他数据类型的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21717263/

相关文章:

c++ - 简单的C/C++问题

java - 如何将值从硬编码变量复制到 JSTL/EL 中的 setPorperty 1?

wpf - TabControl 宽度高度问题

ExtJS:我们如何在网格中获取商店的大小

java - 为大小为 10,000 x 10,000 x 10,000 的 3D 数组分配了多少 GB?

在 tcp 套接字请求中的线程进程上一段时间后连接被拒绝 (c/linux)

c - iNotify 如何检测移出

c: const in the dimension of arrays 报错

mysql - MySQL 中带有条件变量的存储过程

java - 数组练习困惑