这段代码如何打印这么大的数字?我在Ubuntu 14.04(gcc 4.8.2)上尝试过它.它在任何编译器的MS Windows上都不起作用(即使是MinGW,也称为"gcc for Windows").为什么?
#include <stdio.h>
#include <math.h>
int main()
{
printf("%.0f\n",pow(2,500));
}
Run Code Online (Sandbox Code Playgroud)
Ubuntu输出:
3273390607896141870013189696827599152216642046043064789483291368096133796404
674554883270092325904157150886684127560071009217256545885393053328527589376
Run Code Online (Sandbox Code Playgroud)
Windows输出:
3273390607896141900000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
(为了清晰起见,添加了换行符.)
我想,这个代码的输出应该在第一个析构函数之后停止.因为在它们的括号之后调用了析构函数.因此,由于前三个析构函数的闭括号是在返回0之后; 声明,如何调用他们的析构函数?
#include < iostream>
using namespace std;
int val=0;
class abc
{
public :
abc()
{
cout<<++val;
}
~abc()
{
cout<<--val;
}
};
int main()
{
abc a1,a2,a3;
{
abc a4;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:12343210
为什么不:12343