输入两个整数a和b,1&lt; = a,b <= 10 ^ 6。打印他们的总和。
代码使用int:
int a, b;
cin >> a >> b;
cout << a + b;
代码使用double:
double a, b;
cin >> a >> b;
cout << a + b;
我将这些代码提交给在线评判网站后,第一个代码可以通过所有5个案例,但第二个代码只能通过3个,其他2个代码都是错误答案。
但由于double
包含int
的范围,为什么它不能通过int
可以传达的某些情况?我知道使用double
代替int
可能会浪费内存,但我认为这不会导致任何错误。
此外,使用double
时,如果我使用printf("%.0lf", a + b);
打印结果,它也可以传递所有5个案例。
我知道这是一个非常简单的程序,但我无法弄清楚为什么使用double会出错。
答案 0 :(得分:1)
当结果大于或等于10 ^ 6时,它将以科学记数法cout
打印,而在线法官不接受。