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 ...
 
随机推荐
- [译]Stairway to Integration Services Level 12 - 高级日志配置
			
介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾 Reviewing SSIS Task Events 在做实 ...
 - 【ActiveMQ】持久化消息队列的三种方式
			
1.ActiveMQ消息持久化方式,分别是:文件.mysql数据库.oracle数据库 2.修改方式: a.文件持久化: ActiveMQ默认的消息保存方式,一般如果没有修改过其他持久化方式的话可以不 ...
 - Oracle游标-循环查询表中数据(表名),并执行
			
Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount ); --定义一个游标变量 curs ...
 - Java配置
			
JAVA_HOME -- JDK安装的路径 PATH -- 加入:;%JAVA_HOME%\bin; CLASSPATH -- 加入:;%JAVA_HOME%\lib\dt.jar;%JAVA_HOM ...
 - select into from 和 insert into select 的用法和区别(转)
			
转自:http://www.studyofnet.com/news/182.html select into from 和 insert into select都是用来复制表,两者的主要区别为: se ...
 - 我的Python成长之路---第六天---Python基础(18)---2016年2月20日(晴)
			
os模块 提供对操作系统进行调用的接口 >>> import os >>> os.getcwd() # 获取当前工作目录,类似linux的pwd命令 '/data/ ...
 - 如何用一个语句判断一个整数是不是二的整数次幂——从一道简单的面试题浅谈C语言的类型提升(type promotion)
			
最近招聘季,看JULY大哥的面试100题时,碰到这么一个扩展问题: 如何用一个语句判断一个整数是不是二的整数次幂?(此题在编程之美也有) easy, 2的整数次幂的二进制形式只有一个1,只要用i和i- ...
 - 【转】C++常见错误大全
			
原文转自:http://hi.baidu.com/qiou2719/item/b9eed949130ff50ec0161331 C++常见错误大全 0. XXXX "is not a cla ...
 - 2013杭州网络赛C题HDU 4640(模拟)
			
The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
 - 复习知识点:UITableView和UICollectionView的常用属性
			
UITableView UICollectionView //UICollectionViewLayout //UICollectionViewLayout决定了UICollectionView如何 ...