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
一些与平台无关的整型:
上面是一些与平台无关的数据类型,由于在32位机器和64位机器中,long占据不同的字节数,所以推荐使用上面的类 |
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的关系与应用
转载:http://www.cppblog.com/xyjzsh/archive/2010/10/20/130554.aspx?opt=admin int类型比较特殊,具体的字节数同机器字长和编译 ...
- 数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 ...
随机推荐
- Eclipse安装反编译插件JD(Java Decompiler)
JD安装说明:*****Eclipse 插件安装*****1. 在网上搜索并下载jdeclipse_update_site.zip2. Eclipse -> Install New Softwa ...
- foreach学习笔记
对集合进行遍历 只能获取集合元素,但是不能对集合进行操作. 迭代器除了遍历,还可以进行remove的动作. 如果是用ListIterator,还可以在遍历过程中进行增删改查的动作. for(Strin ...
- jbpmAPI-1
1.1. What is jBPM? jBPM是一个灵活的业务流程管理(BPM)套件.它是轻量级的,完全开源Apache许可下(分布式),用Java编写的.它允许您模型.执行和监控业务流程的整个生命周 ...
- Android各种效果集合
QQ侧滑风格:http://www.cnblogs.com/lichenwei/p/4111252.html,通过继承HorizontalScrollView类来实现的.
- php实现分页,上一页下一页
首先学东西 要多看手册用php自带的函数 可以解决一些难解的问题 <?php /** * Created by JetBrains PhpStorm. * User: Administr ...
- QT动画介绍(有例子可以下载)
所谓动画就是在一个时间段内的不同时间点有不同的状态,只要定义好这样状态,实现动画就是水到渠成的事情.当然做这件事情,最好用的就是状态机,点击这里查看Qt使用状态机实现动画效果实例. 不过,实现动画也有 ...
- stackoverflow,stackexchange,zhihu,ilewen,segmentfault,answerhub,question2answer,,
http://stackexchange.com/ http://question2answer.org/ http://answerhub.com/qa/ http://segmentfault.c ...
- cocos2dx进阶学习之CCScene
继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...
- 2015暑假acm短训小结
时间很快,短训已经结束,短短20天,心里有一些思绪想要记下. 收获: 从最近发的随笔中可以看出,做得最多的是搜索——Dfs,Bfs.对于搜索,如何描述状态,如何压缩状态,如何决定下一个结点,是否可以剪 ...
- frame和bounds的区别
frame:根据父视图坐标系来确定自己的位置 bounds:该视图在自己坐标系的位置和大小 修改bounds并不会引起视图位置的变化,会影响自身子视图的位置:修改frame会引起视图位置的变化 UIV ...