VC ++ 2010 vs G ++ unsigned long long溢出差异

时间:2012-11-01 23:03:34

标签: visual-c++ g++

更新 嗯,我有更新。显然我的大量“unsigned long long fhash [105] [100555]”没有在vC ++中自动初始化为零...当我做了{0}时它工作了。是不是应该自动初始化?

我正在参加比赛编程,我通常在学校/ ideone等用g ++编译......但我必须使用VC ++ 2010编译器。

那就是说,我有代码进行多项式滚动散列(就像在Rabin-Karp中使用的那样),但这些编译器的溢出会不同吗?

代码在这里:http://pastebin.com/UFdpwHCt(哈希在第67行附近)

输出在这里:http://i.imgur.com/KCcvI.png

为什么“bhash”在两个编译器之间是平等的,但“fhash”不是?它们使用相同的方法进行散列...在G ++ - 3输出中,“fhash”和“bhash”输出是相同的(它们应该是)但在VC ++ - 10中输出“fhash”和“bhash” “不一样......

我正在使用溢出来让它自然地进行修改,以加快执行速度,而不是使用大质数显式修改它。

1 个答案:

答案 0 :(得分:0)

不是问题。问题是它没有被初始化为零。使用memset修复它。