论RP++和RP–哪个更好

发布于 2016-02-10  1688 次阅读


今天听lyx说,RP--会比RP++更好,因为在-到数据越界的时候就会“爆正”,而且数字还很大。这叫RP爆发。于是我就来做了一次实验,然后来发【水】文【贴】

well,我写了一个程序,是这样的:

#include<iostream>
int main()
{
	int rp=-1;
	while(rp<0)
	{
		rp--;
	}
	std::cout<<"rp="<<rp<<std::endl;
	return 0;
 }

其中的int改成等会要的数据类型。

首先,我们来试一下int类型……结果是这样的:RP1

9.44s,溢出以后变正了……结果还是令人满意的。

辣我们再试一下如果是RP++,加到那个数值,会是怎么样的呢?

这个时候,代码就应该变成这样了

int rp=1;
	while(rp<2147483647)
	{
		rp++;
	}

运算的结果……卧槽,10.01s 居然比RP--还慢一点!

好吧我输了还不行吗……这时候lyx还提出了应该用long long试一试……

于是我就把一开始那个代码的int改成了long long……然而,运行了10+分钟,还是没有出答案。最后我准备算一算。

计算机执行减法运算的速度是……诶算了懒得翻了,就近似的看成10亿次运算/s吧。long long的最大数值是
264   ,

辣么,计算机算完他就是要

1.844674407×1010sec=18446744070sec=5764607.523hours=240191days=658.06years

呕,天哪,658年!好可怕!

然而,计算机似乎在实际上运算会慢一点……

我把运算快进10亿倍。其实就是把RP--改成RP-=1,000 ,000,000。运行结果是:运行时间45.47s,溢出结果9223372036709551615。这时候lyx对我说:“看吧,多大!”我也就嘿嘿嘿了……这尼玛是快进了10亿倍的结果啊!实际上是要:

45.47sec×1000000000=45740000000sec=14293750hours=595572.9167days=1631.7years

1631年。到泰山顶上等去吧

好吧结果也就出来了:RP--在int数据类型的情况下,会比RP++要快一点……然而在long long下(还有一种数据类型long没有提及,但是经过初步计算……溢出也是要很久的……),RP--已经完全阵亡……

不过我觉得,没必要那么较真。拿来玩玩(说好听一点就是学习)就好了。况且这是计算机。现实生活中在RP还没有跌破极值的时候估计就已经差到了那种躺在床上就粉碎性骨折的水平了吧?2333333333

好吧……这篇文章就这样结束吧。各位大神不要见笑,小弟这只是在【水】【贴】qwq

艾玛,大神要来打人了,赶紧跑路开溜!

images


等风来,不如追风去。