• 数据类型 (C语言)


    基础数据类型

    C语言提供了char、int、float和double这四个基本的算术类型说明,以及signed、unsigned、short和long这几个修饰词。以下是典型的数据位长和范围。编译器可能使用不同的数据位长和范围。请参考具体的参考。
    在标准头文件limits.h 和 float.h中说明了基础数据的长度。float,double和long double的范围就是在IEEE 754标准中提及的典型数据。另外,C99添加了新的复数类型,C11添加了原子类型,它们不在本条目讨论范围内。

    关键字字节(字节)范围格式化字符串硬件层面的类型备注
    char1bytes通常为-128至127或0至255,与体系结构相关%c字节(Byte)大多数情况下即signed char;在极少数1byte != 8bit或不使用ASCII字符集的机器类型上范围可能会更大或更小。其它类型同理。
    unsigned char1bytes通常为0至255%c、%hhu字节
    signed char1bytes通常为-128至127%c、%hhd、%hhi字节
    int2bytes(16位系统) 或 4bytes-32768至32767或 -2147483648至2147483647%i、%d字(Word)或双字(Double Word)signed int(但用于bit-field时,int可能被视为signed int,也可能被视为unsigned int)
    unsigned int2bytes 或 4bytes0至65535 或 0至4294967295%u字或双字
    signed int2bytes 或 4bytes-32768至32767 或 -2147483648至2147483647%i、%d字或双字
    short int2bytes-32768至32767%hi、%hdsigned short
    unsigned short2bytes0至65535%hu
    signed short2bytes-32768至32767%hi、%hd
    long int4bytes 或 8bytes-2147483648至2147483647 或 -9223372036854775808至9223372036854775807%li、%ld长整数(Long Integer)signed long
    unsigned long4bytes 或 8bytes0至4294967295 或 0至18446744073709551615%lu整数(Unsigned Integer)或长整数(Unsigned Long Integer)依赖于实现
    signed long4bytes或 8bytes-2147483648至2147483647 或 -9223372036854775808至9223372036854775807%li、%ld整数(Signed Integer)或长整数(Signed Long Integer)依赖于实现
    long long8bytes-9223372036854775808至9223372036854775807%lli、%lld长整数(Long Integer)
    unsigned long long8bytes0至18446744073709551615%llu长整数(Unsigned Long Integer)
    float4bytes2.939x10−38至3.403x10+38 (7 sf)%f、%e、%g浮点数(Float)
    double8bytes5.563x10−309至1.798x10+308 (15 sf)%lf、%e、%g双精度浮点型(Double Float)
    long double10bytes或 16bytes7.065x10-9865至1.415x109864 (18 sf或33 sf)%lf、%le、%lg双精度浮点型(Double Float)在大多数平台上的实现与double相同,实现由编译器定义。
    _Bool1byte0或1%i、%d布尔型(Boolean)

    注:粗体为C99所新增的类型。
    C99增加了一个布尔型(真/假)类型_Bool。此外,头定义了bool作为该类型的方便别名,并且还提供了true和false的宏。_Bool的功能与普通的整数类型相似,但有一个例外:任何不是0(false)的_Bool的赋值都存储为1(true)。这种行为的存在是为了避免隐式缩小转换中的整数溢出。例如,在下面的代码中。

    unsigned char b = 256;
    
    if (b) {
    	/* do something */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果unsigned char的大小为8位,则变量b评估为假。这是因为数值256不适合数据类型,这导致它的低8位被使用,结果是一个零值。然而,改变类型会使以前的代码表现正常。

    _Bool b = 256;
    
    if (b) {
    	/* do something */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    类型_Bool也确保真值总是相互比较相等。

    _Bool a = 1, b = 2;
    
    if (a == b) {
    	/* this code will run */
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    django Ajax(七)
    DRF统一返回格式
    VSCode C++环境配置及测试运行
    最强电脑控制手机投屏到电脑软件
    JVS低代码表单自定义按钮的使用说明和操作示例
    java计算机毕业设计基于ssm的课程在线学习平台系统
    单词接龙 II
    shell脚本的 正则表达式
    【AI设计模式】01-数据表示-特征哈希(Feature Hashed)模式
    十小时开源了一个加密算法仓库,功能强大,后端开发人员狂喜!
  • 原文地址:https://blog.csdn.net/weixin_48120109/article/details/127955679