Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中数据类型的大小、最小值和最大值_C_Types_Size_Unsigned - Fatal编程技术网

C中数据类型的大小、最小值和最大值

C中数据类型的大小、最小值和最大值,c,types,size,unsigned,C,Types,Size,Unsigned,我需要确定C中以下类型的大小、最小值和最大值: 煤焦 无符号字符 短 int 无符号整数 无符号长 浮动 我希望有人能帮我澄清以下几点: 在这种情况下,“尺寸”一词的确切含义是什么 例如,我编写了以下代码: #include <stdio.h> #include <limits.h> #include <float.h> int main(void) { char c; int h = sizeof(c); printf("%.6

我需要确定C中以下类型的大小、最小值和最大值:

  • 煤焦
  • 无符号字符
  • int
  • 无符号整数
  • 无符号长
  • 浮动
我希望有人能帮我澄清以下几点:

  • 在这种情况下,“尺寸”一词的确切含义是什么
  • 例如,我编写了以下代码:

    #include <stdio.h>
    #include <limits.h>
    #include <float.h>
    
    int main(void)
    {
        char c;
        int h = sizeof(c);
        printf("%.6d\n", h);
    
        int n;
        h = sizeof(n);
        printf("%.6d\n", h);
    }
    
    #包括
    #包括
    #包括
    内部主(空)
    {
    字符c;
    int h=尺寸f(c);
    printf(“%.6d\n”,h);
    int n;
    h=尺寸f(n);
    printf(“%.6d\n”,h);
    }
    
    它输出1表示字符,4表示整数。这些数字是什么意思

  • 如何用一些简单的初学者C代码确定最小值和最大值

  • “unsigned”一词在这里是什么意思

  • sizeof中使用的字大小表示该类型在内存中占用的字节数。字符是4字节(36位),而整数是1字节(8位)
  • 要获得最小值和最大值,可以使用库限制.h,如前所述。例如,如果您想知道整数可以存储的最大值,只需输出常量
    INT\u MAX
  • 单词“unsigned”意味着字节将仅用于存储自然数,因此没有“sign”。例如,
    unsigned int
    用于从0到4294967295(4字节int)的数字,而
    int
    存储从-2147483648到2147483647(同样是4字节int)的数字
  • 在这种情况下,“尺寸”一词的确切含义是什么
  • h=sizeof(n)
    sizeof
    是对象在内存中占用的字节数。在C语言中,一个“字节”通常是8位,但可能更多。使用
    字符位

    非位字段的最小对象的位数(字节)
    字符位8
    (最小值)
    C11 dr§5.2.4.2.1 1

    存储在任何其他对象类型的非位字段对象中的值由n×
    CHAR\u位
    位组成,其中n是该类型对象的大小,以字节为单位
    §6.2.6.1 4

    要正确计算和打印大小,请使用类型
    size\u t
    “%zu”

    示例输出-您的可能不同

    char            range -128 ... 127
    unsigned char   range 0 ... 255
    short           range -32768 ... 32767
    int             range -2147483648 ... 2147483647
    unsigned int    range 0 ... 4294967295
    unsigned long   range 0 ... 18446744073709551615
    float           finite range -3.40282347e+38 ... 3.40282347e+38
    
    许多编译器支持浮点类型的+或+/-无穷大。这样,最大的
    浮点值
    就是
    无穷大
    。研究
    maging_VALF
    ,了解更多关于
    float
    max的想法


  • “unsigned”一词在这里是什么意思

  • 整数类型缺少符号位。它的最小值是0。

    您需要阅读C编程语言。对于无符号类型,最大值是
    (某些无符号类型)-1
    。对于有符号类型,请使用诸如
    xxx\u MAX
    之类的常量。对于特定类型变量可以表示的最小值和最大值,请查看“limits.h”中的内容,其中包含@chux引用的常量。至于输出中的值“1”或“4”意味着什么,它是“char”和“int”变量分别占据的八位字节数(即该变量的“sizeof”)。
    // FP limits
    #include <float.h>
    // Standard integers 
    #include <limits.h>
    // Fixed width, minimum width, fast integers 
    #include <stdint.h>
    // Extended multibyte/wide characters
    #include <wchar.h>
    
    #include <stdio.h>
    
    printf("char            range %d ... %u\n", CHAR_MIN, CHAR_MAX);
    printf("unsigned char   range %u ... %u\n", 0, UCHAR_MAX);
    printf("short           range %d ... %d\n", SHRT_MIN, SHRT_MAX);
    printf("int             range %d ... %d\n", INT_MIN, INT_MAX);
    printf("unsigned int    range %u ... %u\n", 0, UINT_MAX);
    printf("unsigned long   range %lu ... %lu\n", 0, ULONG_MAX);
    printf("float           finite range %.*g ... %.*g\n", FLT_DECIMAL_DIG, -FLT_MAX,
       FLT_DECIMAL_DIG, FLT_MAX);
    
    char            range -128 ... 127
    unsigned char   range 0 ... 255
    short           range -32768 ... 32767
    int             range -2147483648 ... 2147483647
    unsigned int    range 0 ... 4294967295
    unsigned long   range 0 ... 18446744073709551615
    float           finite range -3.40282347e+38 ... 3.40282347e+38