标题:How to compile to 64-bit program?
只看楼主
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
 问题点数:0 回复次数:8 
How to compile to 64-bit program?

Hi guys, I want to ask

Is it possible to compile the following source code to a 64-bit program on a 32-bit system?

I have MS VS2005 + Dev-C++ 4.9.9.2 installed on my 32-bit windows xp professional.


#include <iostream>
using namespace std;

int main()
{
long long i=1000000000000; // this number overflows 32-bit integer
cout<<i<<endl;
return 0;
}


搜索更多相关主题的帖子: program compile How windows long 
2007-07-20 15:53
stupid_boy
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-7-6
得分:0 

你试一试不就知道了?


失眠。。。
2007-07-20 16:05
一番宝瓶
Rank: 1
等 级:新手上路
帖 子:239
专家分:0
注 册:2007-7-14
得分:0 

Maybe we express it in 32-bit OS by using array to deal with big integer.
I got a question like this before as well.

" what's the result(c) in a 32-bit OS? "



#include<iostream>
using namespace std;

int main()
{
long x = 987654321, c = 0, d = 1, e = 6;
while(x--){
c += d,
d += e,
e += 6;
}

cout<<c<<endl; //in an 128-bit OS,the code could be run

return 0;
}


2.3.2.2.2.0
2007-07-20 20:13
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

你用VS2005(安装64位支持),然后在编译时使用64位方式。

我没试过,have a go


女侠,约吗?
2007-07-21 00:27
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 

用G++编译器,可以使用long long 类型和cout<<i<<endl;进行输出,用printf("%lld\n",i);可以通过编译但输出结果不正确。
在VC++6.0上,我不能使用long long进行声明,可以使用__int64但不能使用cout<<i<<endl;编译错(提示<<运算有不明确,估计没有对__int类型重载过<<运算)非常奇怪。同样,用printf("%lld\n",i);可以通过编译但输出结果不正确。

我是32位机 OS:WINXP SP2

2007-07-21 01:20
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

用long long有用么?
64位是系统的地址总线宽度..哪是这么来的啊..
要这样能行, 我原来学虚拟机的时候用的基础变量位宽都是128bits, 导师还说"为128位计算机做好准备"...
(^^!)

请指教..


女侠,约吗?
2007-07-21 09:06
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
回复:(野比)用long long有用么?64位是系统的地址总...
子不闻实践是检验真理的唯一标准乎?你可以在32位机上试试就知道了
2007-07-21 22:31
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 

我发觉在G++和VC++6.0上都可以使用printf("%I64d\n",i);对64位整型进行输出

#include <iostream>

using namespace std;

int main()
{
long long i=1234567890123ll;//初始化的时候G++对于超过long表示范围的数需要加后缀ll,而VC++6.0上不需要,确切の说是不能加
printf("%I64d\n",i);
}

2007-07-29 17:17
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 

确实没试过..原来VM都是拿汇编学的..
有时间试试..


女侠,约吗?
2007-07-29 23:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-156871-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067837 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved