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位有效位 |
c++ 中关于int,unsigned int , short的关系与应用的更多相关文章
- 嵌入式中的 *(volatile unsigned int *)0x500 解释
C语言中*(volatile unsigned int *)0x500的解释: 如下: (unsigned int *)0x500:将地址0x500强制转化为int型指针*(unsigned int ...
- 挖一挖unsigned int和补码
文章要讨论的是两部分: 1. 原码,反码和补码. 2. short, unsigned short, int, unsigned int, long, unsigned long的表示及转换 1. 原 ...
- 无符号整型 unsigned int、unsigned long、usigned long long、size_t 比较和格式控制
位数比较 由于数据的长度和平台相关,所以基于 64 位系统比较. Windows Linux unsigned int 32 bits/4294967295 32 bits unsigned long ...
- c 中关于int,unsigned int , short 各种类型总结
int类型比较特殊,具体的字节数同机器字长和编译器有关.如果要保证移植性,尽量用__int16 __int32 __int64吧__int16.__int32这种数据类型在所有平台下都分配相同的字节. ...
- 数32位 unsigned int中1的个数
参考文章:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 最简单的方法: int BitCount0(unsigned ...
- [转载] java中byte数组与int,long,short间的转换
文章转载自http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * ...
- (转+原)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) ...
- Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)
http://darksleep.com/player/JavaAndUnsignedTypes.html —————————————————————————————————————————————— ...
- java中byte数组与int,long,short间的转换
http://blog.csdn.net/leetcworks/article/details/7390731 package com.util; /** * * <ul> * <l ...
随机推荐
- BZOJ2296: 【POJ Challenge】随机种子
2296: [POJ Challenge]随机种子 Time Limit: 1 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 114 Solv ...
- .net(C#)访问Oracle数据库的几种免安装组件的对比(转)
原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...
- attribute section的用法
1. gcc的__attribute__编译属性 要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或 ...
- POJ 2502 Dijsktra
POJ subway 600K 0MS 题意:乘坐地铁从家到学校,地铁40km/h 步行10km/h , 已知各个站点的x,y坐标,输入的信息每个列次用-,-1隔开,要求花费的时间最少 解决方案:把家 ...
- JAVA Web项目的编码过滤器
首先写一个EncodeFilter的过滤类: package com.djtu.wy.common; import java.io.IOException;import javax.servlet.F ...
- Spock Proxy
Spock Proxy undefined 服务网关_百度搜索 undefined 8月2日,深圳 | DockOne技术沙龙开始报名啦 - DockOne.io undefined 知道创宇爬虫题- ...
- Linux下SVN命令总结
目录 一.从版本库获取信息... 1 二.从版本库到本地... 2 三.从本地到版本库... 2 四.高级应用... 4 一.从版本库获取信息 svn help command 获取子命令说明 svn ...
- JavaFX 3D部分介绍(3) Lights
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- Java内存区域 - 深入Java虚拟机读后总结
Java虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,有各自的创建时间和销毁时间,有的区域随着虚拟机进程的启动而存在,有的区域则是依赖用户线程的启动 ...
- SQL语法集锦一:显示每个类别最新更新的数据
本文转载http://www.cnblogs.com/lxblog/archive/2012/09/28/2707504.html (1)显示每个类别最新更新的数据 在项目中经常遇到求每个类别最新显示 ...