转载: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位有效位

c++ 中关于int,unsigned int , short的关系与应用的更多相关文章

  1. 嵌入式中的 *(volatile unsigned int *)0x500 解释

    C语言中*(volatile unsigned int *)0x500的解释: 如下: (unsigned int *)0x500:将地址0x500强制转化为int型指针*(unsigned int ...

  2. 挖一挖unsigned int和补码

    文章要讨论的是两部分: 1. 原码,反码和补码. 2. short, unsigned short, int, unsigned int, long, unsigned long的表示及转换 1. 原 ...

  3. 无符号整型 unsigned int、unsigned long、usigned long long、size_t 比较和格式控制

    位数比较 由于数据的长度和平台相关,所以基于 64 位系统比较. Windows Linux unsigned int 32 bits/4294967295 32 bits unsigned long ...

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

    int类型比较特殊,具体的字节数同机器字长和编译器有关.如果要保证移植性,尽量用__int16 __int32 __int64吧__int16.__int32这种数据类型在所有平台下都分配相同的字节. ...

  5. 数32位 unsigned int中1的个数

    参考文章:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 最简单的方法: int BitCount0(unsigned ...

  6. [转载] java中byte数组与int,long,short间的转换

    文章转载自http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * ...

  7. (转+原)VC编译错误:uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义

    参考网址:http://zhanyonhu.blog.163.com/blog/static/16186044201023094754832/ 1>uafxcw.lib(afxmem.obj) ...

  8. Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)

    http://darksleep.com/player/JavaAndUnsignedTypes.html —————————————————————————————————————————————— ...

  9. java中byte数组与int,long,short间的转换

    http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * <l ...

随机推荐

  1. linxu命令小结

    1.设置root用户的密码 sudo passwd root 2.切换用户 su username su:switch user的简写 3.切换到超级用户 sudo su sudo (super us ...

  2. 使用GDI+轻松创建缩略图

    Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int   GetEncoderClsid(const   WCHAR*   format,   ...

  3. HDU-2521 反素数

    反素数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. vijosP1037搭建双塔

    vijosP1037搭建双塔 链接:https://vijos.org/p/1037 [思路] DP. [代码] #include<iostream> #include<cstrin ...

  5. Cogs 1709. [SPOJ705]不同的子串 后缀数组

    题目:http://cojs.tk/cogs/problem/problem.php?pid=1709 1709. [SPOJ705]不同的子串 ★★   输入文件:subst1.in   输出文件: ...

  6. YII 权限管理

    CREATE TABLE IF NOT EXISTS `admin_role` ( `id` ) unsigned NOT NULL auto_increment, `name` ) NOT NULL ...

  7. 【oracle】初学jobs

    含义:job是oracle的一种对象,可以理解为定时执行的程序 目的:定时自动执行特定代码 照猫画虎--创建job 1.创建测试表JOB_TEST create table JOB_TEST(a da ...

  8. Linux Foundation Secure Boot System Released

    As promised, here is the Linux Foundation UEFI secure boot system.  This was actually released to us ...

  9. MVC母版面,子页的脚本生成在最后

  10. ArcEngine中使用上下左右键移动地图

    转自愿文ArcEngine中使用上下左右键移动地图 因项目需要,需对mapcontrol控件响应上下左右键,从网上找的方法都一样,都值提到了需要设置axMapControl1的KeyIntercept ...