`

常用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++基础C++相关笔记总结

    根据给定的文件信息,以下是对C++基础知识的详细总结,涵盖了标题与描述中的关键知识点,包括虚函数、常量成员函数、构造函数、析构函数、模板等核心概念。 ### 虚函数与常量成员函数 在C++中,虚函数允许派生类...

    C++各种类型信息总结

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

    c++常用笔试总结资料

    这份"我的师兄总结的c++常用笔试资料"包含了丰富的C++知识点,旨在帮助备考者顺利通过C++相关的技术面试。 首先,C++的基础知识包括语法、数据类型和控制结构。C++支持基本的数据类型如整型(int)、浮点型(float、...

    C++ 四种强制类型转换的总结

    ### C++ 四种强制类型转换的总结 在C++编程语言中,为了实现不同数据类型之间的转换,提供了四种不同的强制类型转换操作符:`static_cast`、`const_cast`、`dynamic_cast` 和 `reinterpret_cast`。这些操作符不仅在...

    C++ 基本数据类型

    - **`int`**:整型,是常用的整数类型,一般占用4个字节(32位)。但在不同的编译器和平台上,`int`的大小可能会有所不同。 - **`long`**:长整型,通常占用4个字节(32位),但在某些平台上可能占用8个字节(64位)。它比...

    C语言面试总结,C++面试总结,嵌入式方向C总结,以及一些常用方法的实现

    2. **C++面试总结**: C++是C语言的扩展,增加了面向对象特性。面试时会关注以下方面: - 面向对象编程:封装、继承、多态。 - 类与对象:构造函数、析构函数、友元、访问修饰符。 - 动态内存管理:new、delete...

    C++string类型的使用总结

    ### C++ `string` 类型的使用总结 在C++编程语言中,`string` 类是一种非常重要的数据结构,用于处理文本数据。本篇总结旨在详细介绍`string` 类的构造方法、常用操作方法及其功能特性。 #### 一、`string` 类对象...

    VC常用数据类型总结[总结].pdf

    《VC常用数据类型总结》 在软件开发领域,尤其是使用Visual C++ (VC++) 进行编程时,理解和掌握常用的数据类型是至关重要的。本文将对VC中的一些常见数据类型进行详细阐述,以便于开发者更好地编写高效且无误的代码...

    33个c++重要知识总结(cpp代码)

    5. **结构体中的运算符重载.cpp**:C++允许我们为自定义类型重载运算符,如`+`, `-`, `*`, `/`, `, `&gt;&gt;`等,以实现自定义的行为,增强代码的表达性。 6. **随机数生成加二分法排序.cpp**:`&lt;random&gt;`库提供随机数...

    C_C++问题总结

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

    最常用的c++程序

    从给定的C++程序示例中,我们可以总结出一系列重要的C++编程知识点,这些知识点对于初学者来说至关重要,能够帮助他们建立起扎实的基础。 ### 输出一行字符 在第一个示例中,我们看到了如何使用`cout`来输出一行...

    OD常用C++断点

    ### OD常用C++断点详解 #### 一、概述 在软件逆向工程与调试过程中,设置断点是一项非常重要的技能。本文将详细介绍在Ollydbg(简称OD)这款流行的调试器中,如何利用C++语言特性来设置各种类型的断点,以便更高效...

    VC常用数据类型总结.doc

    以下是对文档中提到的一些常用数据类型的详细说明: 1. **ATOM**:在Windows API中,ATOM是一种特殊的16位数值,用于表示在系统原子表中的字符串引用,通常用于注册类或创建全局字符串。 2. **BOOL**和**BOOLEAN**...

    c++语法精品总结

    ### C++语法精品总结 #### 一、C++编译器预定义宏 在C++编程过程中,编译器会自动定义一些预处理宏来帮助开发者了解编译环境。例如,当编译C++程序时,编译器会自动定义`__cplusplus`宏,而在编译标准C程序时,则...

    c++常用算法实现

    根据给定文件的信息,我们可以总结出以下几个C++相关的知识点: ### 1. 二叉搜索树(Binary Search Tree, BST)实现 二叉搜索树是一种特殊的二叉树数据结构,其中每个节点包含一个键(本例中为整数值),以及指向...

    c/c++常用头文件汇总

    总结来说,这些头文件涉及到了C/C++编程中的核心概念,包括数据结构(如字符串、队列、树、哈希表和链表)、算法(如排序和查找)以及内存管理和容器操作。理解和熟练运用这些知识是成为一名优秀的C/C++程序员的基础...

    C++常用类和API函数

    ### C++常用类详解 #### CArchive类:用于二进制保存档案 - **简介**:`CArchive` 类主要用于二进制文件的序列化,它支持对象的存储和加载,使得开发人员能够轻松地保存应用程序的状态。 - **构造函数**: - `...

    C++常用头文件说明

    本文将深入探讨一些常用的C++头文件,帮助读者更好地理解它们的作用及应用场景。 ### 1. `&lt;ShlWApi.h&gt;` - Windows Shell API `&lt;ShlWApi.h&gt;` 是一个Windows特有的头文件,主要用于提供对Windows Shell API的访问。...

    c++基础知识总结概括

    C++标准库提供了一系列常用的功能,包括数学函数、字符串处理、输入输出等。例如: - `&lt;iostream&gt;`: 输入输出流。 - `&lt;cmath&gt;`: 数学函数库。 - `&lt;string&gt;`: 字符串操作。 #### 六、基本数据类型 1. **整型**: - ...

    各种 C++ 字符串类型转换

    本文将详细介绍几种常用的C++字符串类型(`char *`、`wchar_t*`、`_bstr_t`、`CComBSTR`、`CString`、`basic_string` 和 `System.String`)之间的转换方法,并通过示例代码加以解释。 #### 1. `char *` 类型转换 `...

Global site tag (gtag.js) - Google Analytics