题目是输入两个正整数,输出他们的和。输入的数在1(含)到10^6(含)之间。
用scanf和printf就所有的测试用例都能通过,用cin和cout的话就总是有两个测试用例是wrong answer?但是实在看不出有什么问题。。
用scanf的代码:
double a, b;
scanf("%lf %lf",&a,&b);
printf("%.0lf", a + b);
用cin,cout的代码:
double x, y;
cin >> x >> y;
cout << x + y;
请问是哪儿可能导致这两种写法有不同的结果?
是因为超过一百万的结果会被cout输出成科学计数法形式,所以有的case无法通过。
用double而不是int,虽然确实浪费内存,但是在只做正整数的加法的时候并不会因为精度而出错。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。