zoukankan      html  css  js  c++  java
  • c++ 中关于int,unsigned int , short的关系与应用

    转载:http://www.cppblog.com/xyjzsh/archive/2010/10/20/130554.aspx?opt=admin

    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位有效位

  • 相关阅读:
    CStdioFile的Writestring无法写入中文的问题
    Warning: skipping non-radio button in group. 的处理
    Linux命令 改变文档权限及所有者
    动态链接库dll的 静态加载 与 动态加载
    switch的方便用法
    mysql 安装过程中的错误:my-template.ini could not be processed and written to XXXmy.ini.Error code-1
    HDU 3790 最短路径问题 (SPFA)
    container_of用法及实现
    ZXing工具类v1.0
    基于MapReduce的HBase开发
  • 原文地址:https://www.cnblogs.com/zhaox583132460/p/3410332.html
Copyright © 2011-2022 走看看