实验: 内建数据类型的size

原创 2011年01月14日 08:15:00
// test1020.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>

int fnCalculateBuildInDataSize();

int _tmain(int argc, _TCHAR* argv[])
{
    fnCalculateBuildInDataSize();

    getwchar();
    return 0;
}

int fnCalculateBuildInDataSize()
{  
    printf("size of BOOL = %d[Bytes]\r\n", sizeof(BOOL));  
    printf("size of CHAR : %d[Bytes]\r\n", sizeof(CHAR));  
    printf("size of BYTE : %d[Bytes]\r\n", sizeof(BYTE));  
    printf("size of SHORT : %d[Bytes]\r\n", sizeof(SHORT));  
    printf("size of INT : %d[Bytes]\r\n", sizeof(INT));  
    printf("size of LONG : %d[Bytes]\r\n", sizeof(LONG));  
    printf("size of ULONG : %d[Bytes]\r\n", sizeof(ULONG));  
    printf("size of DWORD : %d[Bytes]\r\n", sizeof(DWORD));  
    printf("size of FLOAT : %d[Bytes]\r\n", sizeof(FLOAT));  
    printf("size of DOUBLE : %d[Bytes]\r\n", sizeof(DOUBLE));  
    printf("size of PVOID : %d[Bytes]\r\n", sizeof(PVOID));  
    printf("\r\n");  
    printf("size of bool = %d[Bytes]\r\n", sizeof(bool));  
    printf("size of char : %d[Bytes]\r\n", sizeof(char));  
    printf("size of unsigned char : %d[Bytes]\r\n", sizeof(unsigned char));  
    printf("size of short int : %d[Bytes]\r\n", sizeof(short int));  
    printf("size of int : %d[Bytes]\r\n", sizeof(int));  
    printf("size of long : %d[Bytes]\r\n", sizeof(long));  
    printf("size of unsigned long : %d[Bytes]\r\n", sizeof(unsigned long));  
    printf("size of float : %d[Bytes]\r\n", sizeof(float));  
    printf("size of double : %d[Bytes]\r\n", sizeof(double));  

    //printf("size of void : %d[Bytes]\r\n", sizeof(void));//void 不能用sizeof来计算size   
    printf("size of void * : %d[Bytes]\r\n", sizeof(void *));  

    /** 运行结果 relase by x86
    size of BOOL = 4[Bytes]
    size of CHAR : 1[Bytes]
    size of BYTE : 1[Bytes]
    size of SHORT : 2[Bytes]
    size of INT : 4[Bytes]
    size of LONG : 4[Bytes]
    size of ULONG : 4[Bytes]
    size of DWORD : 4[Bytes]
    size of FLOAT : 4[Bytes]
    size of DOUBLE : 8[Bytes]
    size of PVOID : 4[Bytes]

    size of bool = 1[Bytes]
    size of char : 1[Bytes]
    size of unsigned char : 1[Bytes]
    size of short int : 2[Bytes]
    size of int : 4[Bytes]
    size of long : 4[Bytes]
    size of unsigned long : 4[Bytes]
    size of float : 4[Bytes]
    size of double : 8[Bytes]
    size of void * : 4[Bytes]
    */  

    /** 运行结果 relase by x64
    size of BOOL = 4[Bytes]
    size of CHAR : 1[Bytes]
    size of BYTE : 1[Bytes]
    size of SHORT : 2[Bytes]
    size of INT : 4[Bytes]
    size of LONG : 4[Bytes]
    size of ULONG : 4[Bytes]
    size of DWORD : 4[Bytes]
    size of FLOAT : 4[Bytes]
    size of DOUBLE : 8[Bytes]
    size of PVOID : 8[Bytes]

    size of bool = 1[Bytes]
    size of char : 1[Bytes]
    size of unsigned char : 1[Bytes]
    size of short int : 2[Bytes]
    size of int : 4[Bytes]
    size of long : 4[Bytes]
    size of unsigned long : 4[Bytes]
    size of float : 4[Bytes]
    size of double : 8[Bytes]
    size of void * : 8[Bytes]
    */  

    return S_OK;  
}

/**
实验结论:
    * 不管是哪种平台的PE, double size = 8Bytes

    * X64PE, void * size = 8Bytes
    * X86PE, void * size = 4Bytes
 
    * BOOL 是宏, size = 4
    * bool 是内建数据类型 size = 1
*/


 

    nSize1 = sizeof(PVOID64);   ///< x86, x64下都是8
    nSize2 = sizeof(PVOID);     ///< x86下是4, x64下是8



 

<2013_0529>

sizeof(ULONGLONG) = 8
sizeof(INT64) = 8

<2013_0902>

// testMacro.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
#ifdef _X86_
    _tprintf(L"x86 : DWORD size = %d\r\n", sizeof(DWORD));
    _tprintf(L"x86 : DWORD_PTR size = %d\r\n", sizeof(DWORD_PTR));
#else ifdef (_IA64_ || _AMD64_)
    _tprintf(L"x64 : DWORD size = %d\r\n", sizeof(DWORD));
    _tprintf(L"x64 : DWORD_PTR size = %d\r\n", sizeof(DWORD_PTR));
#endif

    _tprintf(L"\r\nEND, press anykey to quit\r\n");

    getwchar();

    /// run results
    /// x86 : DWORD size = 4
    /// x86 : DWORD_PTR size = 4

    /// x64 : DWORD size = 4
    /// x64 : DWORD_PTR size = 8
    return 0;
}


 

版权声明: 举报

相关文章推荐

Python的数据类型(内置类型)

内置类型 Python提供了功能强大的对象类型,作为语言固有的一部分,在解决问题之前不需要为对象的实现书写代码。 内置对象类型有: Number(数字)、String(字符串)、List(列表)...

Erlang数据类型的内部实现

Erlang中有8种基础数据类型(integer、 float、 atom、 reference、 fun、 port、 pid、 binary)和两种复合结构(tuple、list)。在erl编程时...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Lua 实验,数据类型相关

Lua开发整理

Python 内建类型 - 数字(值)类型

Manual 直译 Note 拓展阅读ManualThere are three distinct numeric types:integers, floating point numbers, an...

python学习笔记: 一

--------------------------几个注意点-------------------------- 核心笔记:在交互式解释器中显示变量的值 如果在交互式解释器中使用print命令...

教女朋友学Python(4)——算

我本来不会Python,一边学一边试图以最简单方式来解释编程和Python,让各位理工男可以拿去教自己的女朋友。 上回说到,妹子们要经常换老公。所以用了一个叫变量的东西来存老公的名字、照片的数量等:...

Hive内置数据类型

Hive的内置数据类型可以分为两大类: (1)、基础数据类型: 基础数据类型包括:TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、BIN...

java内置数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

Hive内置数据类型

Hive的内置数据类型可以分为两大类:(1)、基础数据类型;(2)、复杂数据类型。其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBL...

C++内置数据类型

C++数据类型
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)