为什么我的程序,在Devc++上可以运行,但在vs2017上运行结果不一样,也没报错。

我做了大数阶乘的和的一个作业,在Dev上做的,可是到了vs上结果就开始变的很奇怪。后来我看网上又改了重复使用的 i,把它换成了其他参数,然后vs里面没负的了,可是结果还是不对。
好吧还是有负的。。

如果你的程序在不同的编译器上运行结果不一样,那说明你的代码中存在未定义行为。追问

未定义行为。。。是什么

追答

你要计算什么?

追问

1+2!+3!.....+n! n可以非常大。
会不会是因为我在最外面的循环语句里加了很多循环语句,vs不一定按顺序运行?

追答

n可以非常大,有多大?范围是多少?这个问题很重要

追问

就100 1000 10000都可以

追答

那已经完全超出了任何数据类型所能表示的范围,你唯一的做法就是使用高精度乘法,也就是用数组模拟竖式乘法来计算。

追问

我已经用了数组了。在dev上是可以计算大数的,问题是在vs上连最基本的结果都不对。图里我是输了4试了一下。

追答

那很显然说明你的算法是不正确的。我写一个高精度乘法的封装类给你看一下。
这里字数限制,发不下

追问

私信里可以发吗

追答

图片看得清吗?

追问

看的清谢谢。

看的清谢谢。

温馨提示:答案为网友推荐,仅供参考
相似回答