一、关于int 与long
16位系统:long是4字节,int是2字节
32位系统:long是4字节,int是4字节 ( long long 是8字节(64位,取值范围 -2^63 ~ 2^63-1) )
64位系统:long是8字节,int是4字节
(呵,一直都还以为 32位操作系统上long范围大于int 范围)
C语言规定,无论什么平台,都要保证long型占用的字节数不小于int型;
标准规定long是不会小于Int类型的,意味着long的表示范围肯定要大于等于int类型的表示范围。具体可以由实现决定
·以为指针与int大小一样。在64位系统中,sizeof(void *) == 8,而sizeof(int) == 4。如果忘记了这个,将导致不正确的赋值以致程序崩溃。
图1表示了32位系统的典型操作,CPU一次只都处理4字节内存中的数据。图2显示了有着更宽寄存器的64位系统,一次能处理8字节。
![]() 图1 |
![]() 图2 |
二、在64操作系统上,VS默认安装编译的是32位程序
1、安装VS2008时复选64位编译器选项;
2、开始菜单|所有程序|Microsoft Visual Studio 2008|Visual Studio Tools|Visual Studio 2008 x64 Win64 Command Prompt,开启64位编译环境;
3、命令行: devenv /useenv,启动Visual Studio 2008并进入64位编译环境;
4、开启项目或新建项目一个已存在的32位工程(例如, MyApplication);
5、在”Build”菜单上, 点击”Configuration Manager”;
6、在”Active Solution Configurations”列表中, 点击”New”;
7、在”New Solution Configurations”对话框中, 在”Solution Configuration Name”下面选择”Debug64”(不包含引号), 并且在”Copy Settings From”下面选择”Debug”;
8、点击”OK”;
9、在”Configuration Manager”对话框中, 在”Active Solution Configuration”列表中, 点击选择”Debug64”, 然后点击”OK”;
10、在”Solution”(中文:解决方案)浏览窗口中, 右键”Project”, 然后, 点击”Properties”;
![](https://img-my.csdn.net/uploads/201109/21/0_1316613716nqKq.gif)