我在 Linux 上尝试 time -p 命令,我写了一些代码来浪费 CPU 周期:
#include <iostream>
using namespace std;
int main() {
long int c;
long int ss;
for(c = 0;c < 10000000;c++) {
ss += c*c;
}
cout<<ss<<endl;
return 0;
}
然而,在运行几次后我发现了一些有趣的事情:
me@octopus:~/Desktop> ./test
1292030741067648912
me@octopus:~/Desktop> ./test
1292030742538841328
me@octopus:~/Desktop> ./test
1292030742228685600
me@octopus:~/Desktop> ./test
1292030740402651312
me@octopus:~/Desktop> ./test
1292030740207543344
me@octopus:~/Desktop> ./test
1292030740346553856
me@octopus:~/Desktop> ./test
1292030741629275040
me@octopus:~/Desktop> ./test
1292030740397307072
me@octopus:~/Desktop> ./test
1292030742928964784
me@octopus:~/Desktop> ./test
1292030741780094096
我不仅没有像预期的那样每次都得到相同的号码,而且我什至一次都没有得到相同的号码。这是怎么回事?
最佳答案
您尚未将 ss 初始化为零,因此其初始值未定义。你需要:
long int ss = 0;
关于c++ - 为什么 long int 不是 100% 准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12668081/