zoukankan      html  css  js  c++  java
  • 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占据不同的字节数,所以推荐使用上面的类

  • 相关阅读:
    linux软件安装方式
    docker 安装 jenkins touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    [ERR] Node goodsleep.vip:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
    redis 安装 集群 主从 哨兵 docker
    WPF密码框中禁止复制、粘贴
    Application 统计在线人数
    【转义字符】HTML 字符实体< &gt: &等
    SQL语句统计每天的数据
    正则表达式计算代码数
  • 原文地址:https://www.cnblogs.com/youxin/p/3234100.html
Copyright © 2011-2022 走看看