• c 中关于int,unsigned int , short 各种类型总结


    int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧
    __int16、__int32这种数据类型在所有平台下都分配相同的字节。所以在移植上不存在问题。
    所谓的不可移植是指:在一个平台上编写的代码无法拿到另一个平台上运行时,不能达到期望的运行结果
    例如:在32为平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节,那么在16位上编译出来的exe,
    其中是为int分配2字节,而在32位平台上运行时,会按照4个字节来解析,显然会出错误的!!

    而对于非int行,目前为止,所有的类型分配的字节数都是兼容的,即不同平台对于同一个类型分配相同的字节数!!

    建议:在代码中尽量避免使用int类型,根据不同的需要可以用short,long,unsigned int 等代替。

    下面是各个类型一览表【转】

    64位指的是cpu通用寄存器的数据宽度是64位的。

    数据类型名称 字节数 别名 取值范围
    int * signed,signed int 操作系统决定,即与操作系统的"字长"有关
    unsigned int * unsigned 由操作系统决定,即与操作系统的"字长"有关
    __int8 1 char,signed char –128 到 127
    __int16 2 short,short int,signed short int –32,768 到 32,767
    __int32 4 signed,signed int –2,147,483,648 到 2,147,483,647
    __int64 8 –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
    bool 1 false 或 true
    char 1 signed char –128 到 127
    unsigned char 1 0 到 255
    short 2 short int,signed short int –32,768 到 32,767
    unsigned short 2 unsigned short int 0 到 65,535
    long 4 long int,signed long int –2,147,483,648 到 2,147,483,647
    long long 8 none (but equivalent to __int64) –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
    unsigned long 4 unsigned long int 0 到 4,294,967,295
    enum * 由操作系统决定,即与操作系统的"字长"有关
    float 4 3.4E +/- 38 (7 digits)
    double 8 1.7E +/- 308 (15 digits)
    long double 8 1.7E +/- 308 (15 digits)
    wchar_t 2 __wchar_t 0 到 65,535
    类型标识符 类型说明 长度
    (字节)
    范围 备注
    char 字符型 1 -128 ~ 127 -27 ~ (27 -1)
    unsigned char 无符字符型 1 0 ~ 255 0 ~ (28 -1)
    short int 短整型 2 -32768 ~ 32767 2-15 ~ (215 - 1)
    unsigned short int 无符短整型 2 0 ~ 65535 0 ~ (216 - 1)
    int 整型 4 -2147483648 ~ 2147483647 -231 ~ (231 - 1)
    unsigned int 无符整型 4 0 ~ 4294967295 0 ~ (232-1)
    float 实型(单精度) 4 1.18*10-38 ~ 3.40*1038 7位有效位
    double 实型(双精度) 8 2.23*10-308 ~ 1.79*10308 15位有效位
    long double 实型(长双精度) 10 3.37*10-4932 ~ 1.18*104932 19位有效位

    转自:http://www.cppblog.com/xyjzsh/archive/2010/10/20/130554.aspx

     一些与平台无关的整型:

    Specific integral type limits
    SpecifierCommon EquivalentSigningBitsBytesMinimum ValueMaximum Value
    int8_t signed char Signed 8 1 ?128 127
    uint8_t unsigned char Unsigned 8 1 0 255
    int16_t short Signed 16 2 ?32,768 32,767
    uint16_t unsigned short Unsigned 16 2 0 65,535
    int32_t int Signed 32 4 ?2,147,483,648 2,147,483,647
    uint32_t unsigned int Unsigned 32 4 0 4,294,967,295
    int64_t long long Signed 64 8 ?9,223,372,036,854,775,808 9,223,372,036,854,775,807
    uint64_t unsigned long long Unsigned 64 8 0 18,446,744,073,709,551,615

    上面是一些与平台无关的数据类型,由于在32位机器和64位机器中,long占据不同的字节数,所以推荐使用上面的类

  • 相关阅读:
    [转载]vue中全局和局部引入批量组件方法
    [转]详解在vue-test-utils中mock全局对象
    [转]imageMagick 在nodejs中报错Error: spawn identify ENOENT的解决方案
    使用 dva 如何配置异步加载路由组件
    dva.js 上手
    [转]axios的兼容性处理
    【转】链接伪类(:hover)CSS背景图片有闪动BUG
    【转】 svn: Server sent unexpected return value (403 Forbidden) in response to CHECKOUT request for-解决方法
    vue 路由相同路径跳转报错
    新手小白第一次与后端联调
  • 原文地址:https://www.cnblogs.com/youxin/p/3234100.html
Copyright © 2020-2023  润新知