`

常用C++类型总结

    博客分类:
  • C++
 
阅读更多

常用C++类型总结

 

 

1、基本类型

ANSI C/C++基本数据类型:


说明:

(1)类型修饰符signed和unsigned用于修饰字符型和整形。

(2)类型修饰符short和long用于修饰字符型和整形。

(3)当用signed和unsigned、short和long修饰int整形时,int可省略。

(4)其中bool和wchar_t是C++特有的。

(5)除上表以外,C/C++都可以自定义枚举enum、联合union和struct结构体类型。

(6)以上sizeof通过Windows XP 32位平台测试,其中某些类型数据的字节数和数值范围由操作系统和编译平台决定。比如16位机上,sizeof(int) = 2,而32位机上sizeof(int) = 4;32位机上sizeof(long) = 4,而64位机上sizeof(long) = 8。除此之外,注意64位机上的pointer占8byte。

(7)void的字面意思是“无类型”,不能用来定义变量。void真正发挥的作用在于:<1> 对函数返回和函数参数的限定,例如自定义既不带参数也无返回值的函数void MyFunc(void);<2>定义无类型通用指针void *,指向任何类型的数据。

(8)标准C++库及STL还提供了通用数据结构:字符串类string;向量类模板vector;双端队列类模板deque;链表类模板list;容器适配器堆栈类stack(实现先进后出的操作);容器适配器队列类queue(实现先进先出的操作);集合类set;多重集合类multiset;映射类map;多重映射类multimap;位集合bitset;迭代器iterator (类似指针的功能,对容器的内容进行访问)。

(9)在标准c++中,int的定义长度要依靠你的机器的字长,也就是说,如果你的机器是32位的,int的长度为32位,如果你的机器是64位的,那么int的标准长度就是64位,而vc中__int64是为在32机位机器长实现64位长度的整形数。

(10)关于32位平台下的int和long long从字面上看,应该是64位才更合理,把long当成32位实在是一个历史的包袱。像C#那样新起炉灶的程序语言,由于没有需要支持老代码的问题,就把long当作64位来处理了。在32位平台下,long是相对short而言,long(short)类型是long(short) int类型的简称,sizeof(long) = sizeof(int) = 4。int和long的范围虽然一样,但输入输出格式不同,printf int的格式为%d,而printf long的格式为%ld。考虑到程序的可移植性,还是要将他们区分开来。但当要求的数值范围为4byte时,建议使用int类型,因为第一版的C语言只有一种类型,那就是int。

(11)在Win32 API及MFC中为了使类型名称在语意上更明了,对以上基本类型进行了大量的typedef。例如WINDEF.H中的BYTE,WORD,DWORD。

(12)计算机内部内存的基本单位是1byte(8个电子开关)!

 

 

2、常见的typedef


#define UINT32 int
#define UINT unsigned int
#define DWORD unsigned long
#define LONG long
#define WORD unsigned short  
#define BYTE char

 

3、MSDN

Data Types

  This topic lists the data types most commonly used in the Microsoft Foundation Class Library. Most of the data types are exactly the same as those in the Windows Software Development Kit (SDK), while others are unique to MFC.

  Commonly used Windows SDK and MFC data types are as follows: BOOL A Boolean value.

  BSTR A 32-bit character pointer.

  BYTE An 8-bit integer that is not signed.

  COLORREF A 32-bit value used as a color value.

  DWORD A 32-bit unsigned integer or the address of a segment and its associated offset.

  LONG A 32-bit signed integer.

  LPARAM A 32-bit value passed as a parameter to a window procedure or callback function.

  LPCSTR A 32-bit pointer to a constant character string.

  LPSTR A 32-bit pointer to a character string.

  LPCTSTR A 32-bit pointer to a constant character string that is portable for Unicode and DBCS.

  LPTSTR A 32-bit pointer to a character string that is portable for Unicode and DBCS.

  LPVOID A 32-bit pointer to an unspecified type.

  LRESULT A 32-bit value returned from a window procedure or callback function.

  UINT A 16-bit unsigned integer on Windows versions 3.0 and 3.1; a 32-bit unsigned integer on Win32.

  WNDPROC A 32-bit pointer to a window procedure.

  WORD A 16-bit unsigned integer.

  WPARAM A value passed as a parameter to a window procedure or callback function: 16 bits on Windows versions 3.0 and 3.1; 32 bits on Win32.

  Data types unique to the Microsoft Foundation Class Library include the following:

  POSITION A value used to denote the position of an element in a collection; used by MFC collection classes. LPCRECT A 32-bit pointer to a constant (nonmodifiable) RECT structure.

 

4、数据类型对应字节数

一、程序运行平台

   不同的平台上对不同数据类型分配的字节数是不同的。
   个人对平台的理解是CPU+OS+Compiler,是因为:
   1、64位机器也可以装32位系统(x64装XP);
   2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的);
   3、即使是32位的编译器也可以弄出64位的integer来(int64)。
   以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。
   虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。
   理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。

二、常用数据类型对应字节数

   可用如sizeof(char),sizeof(char*)等得出

   32位编译器:

   char :1个字节
   char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
   short int : 2个字节
   int:   4个字节
   unsigned int : 4个字节
   float:   4个字节
   double: 8个字节
   long: 4个字节
   long long:   8个字节
   unsigned long:   4个字节

   64位编译器:

   char :1个字节
   char*(即指针变量): 8个字节
   short int : 2个字节
   int:   4个字节
   unsigned int : 4个字节
   float:   4个字节
   double: 8个字节
   long: 8个字节
   long long:   8个字节
   unsigned long:   8个字节

 

分享到:
评论

相关推荐

    C++常用数据类型.ppt

    对C++的数据类型进行了一个很好的总结,不喜欢用脑子记东西的朋友,可以把它存在电脑里。

    C++各种类型信息总结

    为避免溢出、输入输出错误,明确C++中的类型信息是有必要的。 包含最常用的C++类型,大小,占用字节,输入输出方法,范围。

    C_C++问题总结

    3.12 两种常用的实现隐式类类型转换的方式是什么?如何避免隐式类 型转换?3.13 STL中的vector:增减元素对迭代器的影响 3.14 STL中排序算法的实现 3.15 C和C++的区别 3.16 内存对齐 3.17 C++转换机制(static_cast...

    c++ 面试题 总结

    一个指向char类型的const对象指针,p不是常量,我们可以修改p的值,使其指向不同的char,但是不能改变它指向非char对象,如: const char *p; char c1='a'; char c2='b'; p=&c1;//ok p=&c2;//ok *p=c1;//error (2)...

    C++的知识总结~~~~~~~~~~

    C++的知识总结~~~~~~~~~~ 关于常用头文件,常见错误总结,数据类型等各种总结(持续更新ing)

    C++进阶课程讲义_v1.0.4.pdf

    7、C++的类型转换 29 7.1 类型转换名称和语法 29 7.2 类型转换一般性介绍 29 7.3 典型案例 30 7.3.1 static_cast用法和reinterpret_cast用法 30 7.3.2 dynamic_cast用法和reinterpret_cast用法 31 7.3.3 const_cast...

    C++常用的#include头文件总结

    本文详细罗列了C++所包含的头文件的名称及作用说明,比较适合初学者了解一下,几乎每一个C++文件的开始都要#include ,可大部分人都没有去关注#include 后面是什么,对照本文的说明相信会对大家理解C++结构多少有些...

    深入浅出——Visual C++入门、进阶与应用实例

     本书从Visual C++基础、C++基础入手,介绍了菜单、工具栏、状态栏、常用控件、对话框、消息、文件系统、数据库、进程与线程、ActiveX控件、动态链接库等几方面的相关技术,并结合丰富的应用案例,力图将Visual C++...

    VC学习教程<易学C++>

     3.2 常用的基本数据类型   3.2.1 整型(integer)   3.2.2 实型(real)   3.2.3 字符型(character)   3.2.4 布尔型(boolean)   3.3 不会变的“箱子”——定义常量   3.4 c++算术表达式   ...

    c++中的string常用函数用法总结

    我们尽可以把它看成是C++的基本数据类型。 好了,进入正题………首先,为了在我们的程序中使用string类型,我们必须包含头文件 。 如下:#include &lt;string&gt; //注意这里不是string.h string.h是C字

    南方科技大学计算机系C++程序设计.rar

    南科大于仕琪副教授的C++课程的学习与总结: 1、C++的基础知识(第一章到第四章) 第一章、编译与预处理,C++环境的介绍 答:主要讲授了C++以及C语言的常用的基础语法,比如,编译链接,预处理宏,输入输出函数, ...

    Visual C++ 常用数据类型转换方法详解第1/2页

    说明:本文纯粹是总结一下有关类型转换的贴子, 本人并未对所有方法都做测试,仅仅是为了给大家一个参考。 读者层次:初学 int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username[]=”程...

    MySQL数据类型和常用字段属性总结

    好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键。M前言 好比C++中,定义int类型需要多少字节,定义double类型...

    MFC中常用的数据类型的转换

    自己总结的一些MFC中常用的类型转换,不全面,但是包括比较常用的。实在懒得记那些烦人的类型。

    Microsoft Visual C++(VC运行库)运行库

    VC运行库通常指的是Microsoft Visual C++运行库,它是用于支持由Microsoft Visual Studio开发的...总结来说,VC运行库是Visual C++开发环境的一部分,它提供了丰富的功能和工具,帮助开发者提高开发效率和代码复用性

    零起点学通C++多媒体范例教学代码

    目录 第1篇初级篇 第1章 初识C++ 1.1 c++简介 1.2 C++与C的区别 1.3 学习c++之前需要先学C吗 1.4 c++与其他语言的区别 1.5 c++的版本以及安装问题 ...附录C C++常用头文件列表 附录D 运算符的优先级 后记

    零起点学通C++学习_多媒体范例教学代码

    目录 第1篇初级篇 第1章 初识C++ 1.1 c++简介 1.2 C++与C的区别 1.3 学习c++之前需要先学C吗 ...1.4 c++与其他语言的区别 ...1.5 c++的版本以及安装问题 ...附录C C++常用头文件列表 附录D 运算符的优先级 后记

    Visual C++ 数据库系统开发完全手册.part2

    2.3 C++数据类型 2.3.1 基本数据类型 2.3.2 数组 2.3.3 指针 2.3.4 结构 2.3.5 枚举类型 2.4 控制结构 2.4.1 顺序结构 2.4.2 分支结构 2.4.3 循环结构 2.4.4 转移语句 2.5 函数 2.5.1 函数的定义与调用 2.5.2 默认...

    Visual C++ 数据库系统开发完全手册.part1

    2.3 C++数据类型 2.3.1 基本数据类型 2.3.2 数组 2.3.3 指针 2.3.4 结构 2.3.5 枚举类型 2.4 控制结构 2.4.1 顺序结构 2.4.2 分支结构 2.4.3 循环结构 2.4.4 转移语句 2.5 函数 2.5.1 函数的定义与调用 2.5.2 默认...

    leetcode题库-algorithm-pattern:算法模板,c++实现,包括最基础的数据结构和常用的算法实现!

    常用的数据结构总结如下(个人总结,如有不对之处请指教): 数据结构是工具,算法是通过合适的工具解决特定问题的方法。也就是说,学习算法之前,最起码得了解那些常用的数据结构,了解它们的特性和缺陷。 注:第一...

Global site tag (gtag.js) - Google Analytics