找回密码
 新注册用户
搜索
查看: 8567|回复: 22

[求助] 有人有64位WinXP的系统么?

[复制链接]
发表于 2013-9-5 03:43:56 | 显示全部楼层 |阅读模式
事情是这样的:yoyo@home的奇异奇数搜索,最近发现了个问题,就是在64位WinXP上,结果文件的输出会有些问题,导致不能得分。症状就是一个64位的整数用printf打印出来不对,尽管用%llu了,但是似乎只有最低的32位打印了出来的样子。我是用cygwin64下的mingw64编译的,如果哪位坛友有这个系统的条件,能帮忙测试一下的话,就万分感谢了~~~
回复

使用道具 举报

发表于 2013-9-5 09:33:11 | 显示全部楼层
似乎winxp 64bit很少有人使用
回复

使用道具 举报

发表于 2013-9-5 12:02:24 | 显示全部楼层
几个 workaround:
1. cout (如果你是纯C就算了)
2. 用 %zu 试试?(我自己没用过)
3. 手动输出:把 llu 手动转换成两个32 位的数,然后输出 (效率会损失一点)
回复

使用道具 举报

发表于 2013-9-5 12:50:42 | 显示全部楼层
最后的方法:mod 10,输出个位,整除10,再mod 10,输出十位,整除10,……写个小函数输出
回复

使用道具 举报

发表于 2013-9-5 13:10:33 | 显示全部楼层
关于printf函数输出64位数的问题,其实在window下和linux下是不一样的:

linux下是
printf("%lld/n",a);
printf("%llu/n",a);

windows下是
printf("%I64d/n",a);
printf("%I64u/n",a);

原文:http://blog.csdn.net/zzqhost/article/details/6064886

你参考一下,我机器刚买,还没装编译器,不好意思啦。。。
回复

使用道具 举报

发表于 2013-9-5 13:27:17 | 显示全部楼层
回复

使用道具 举报

发表于 2013-9-5 15:34:53 | 显示全部楼层
mingw就是windows版的gcc
回复

使用道具 举报

发表于 2013-9-5 15:54:03 | 显示全部楼层
LZ为什么不试试ICC呢,GCC编译的程序比ICC慢不少
回复

使用道具 举报

 楼主| 发表于 2013-9-5 16:00:03 | 显示全部楼层
wpf999 发表于 2013-9-5 15:54
LZ为什么不试试ICC呢,GCC编译的程序比ICC慢不少

……简单来说就是没钱……Windows下的icc要给钱,linux对于非商用有免费版,但是容易有版权之类的纠纷……上次kwsn他们的seti优化程序下架就跟这个有关系,到现在问题还没解决……

不过也没办法,好东西一般来说基本上是要钱的……

回复

使用道具 举报

发表于 2013-9-5 20:37:11 | 显示全部楼层
六楼第一篇文章列出了各种系统下的输出方式,

输出个数.jpg
注意是 %I64d
回复

使用道具 举报

发表于 2013-9-5 20:43:10 | 显示全部楼层
fwjmath 发表于 2013-9-5 16:00
……简单来说就是没钱……Windows下的icc要给钱,linux对于非商用有免费版,但是容易有版权之类的纠纷… ...

微软有 VC 学习版下载,免费的,30 天后申请一个注册码就搞定了

下载地址:http://www.microsoft.com/visuals ... ess-windows-desktop
回复

使用道具 举报

发表于 2013-9-5 21:24:09 | 显示全部楼层
《15款免费IDE,推荐给开发者》
http://www.csdn.net/article/2011-03-23/294453

其中的 Code::Blocks 捆绑了MinGW编译器。
回复

使用道具 举报

 楼主| 发表于 2013-9-6 02:35:46 | 显示全部楼层
refla 发表于 2013-9-5 20:37
六楼第一篇文章列出了各种系统下的输出方式,

我之前写的代码都是用的%llu,在mingw64下编译都过,win7执行也没问题,只是XP64有问题。我不知道这个表什么地方来的,但是mingw64也不是mingw32,套不进去的,而且还是眼见为实的好。

关于编译器,当然我知道有很多免费的,Visual C++ Express我也一直在用,问题是我的程序需要__int128,微软的cl是没有这个东西的,据说也没有计划支持。而要付费的编译器都有过人之处,钱不是白交的,我们讨论的ICC就是Intel的编译器,在一些合适的应用上,编译出来的程序在Intel处理器上性能要比别的编译器强得多,毕竟自己人好说话嘛。

现在我都不用IDE了,直接Notepad++的干活,有个差不多的语法高亮就可以了,IDE其实除了调试好一点也没什么,而调试的话我还是更习惯用printf,况且好好写代码的话,要调试的地方其实不多的。

其实Bug已经找到了,就是XP64的标准库不认%llu,#define一个东西让编译时链接到mingw64自己的函数估计就好了……

回复

使用道具 举报

发表于 2013-9-6 06:22:39 | 显示全部楼层
fwjmath 发表于 2013-9-6 02:35
我之前写的代码都是用的%llu,在mingw64下编译都过,win7执行也没问题,只是XP64有问题。我不知道这个表 ...

好的好的,类似的问题我碰到过,我估计也是 XP64 不认识 %llu,才建议你改输出格式的。因为 long long 是 C99 新标准,老系统不支持是。。。对的
回复

使用道具 举报

 楼主| 发表于 2013-9-6 06:27:59 | 显示全部楼层
refla 发表于 2013-9-6 06:22
好的好的,类似的问题我碰到过,我估计也是 XP64 不认识 %llu,才建议你改输出格式的。因为 long long 是 ...

唉,最近压力略大,忙中有错啊急火攻心啊都已经好几回了,真是惭愧啊……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~
欢迎大家多多支持基金会~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-29 22:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表