C++中的 abs 函数会不会出问题?
有一次做题(https://www.luogu.com.cn/problem/P8869),用自带的 abs 错了,手写 abs 没有错,这是什么原因?是自带的 abs 有什么问题吗?感谢解答{:10_303:} talk is cheap,show me the code
出错的代码呢 yuxijian2020 发表于 2022-11-27 09:53
talk is cheap,show me the code
出错的代码呢
here:
#include <bits/stdc++.h>
using namespace std;
int h, w;
int main() {
scanf("%d%d", &h, &w);
if (w > 0) printf("%d", abs(h));
else printf("%d", -abs(h));
return 0;
} printf("%d", -abs(h));
你以为数学公式呢? 能这么用负号? yuxijian2020 发表于 2022-11-27 09:58
你以为数学公式呢? 能这么用负号?
难道?
printf("%d", -(abs(h)));
这样才是对的? yuxijian2020 发表于 2022-11-27 09:58
你以为数学公式呢? 能这么用负号?
也不对啊? zhangjinxuan 发表于 2022-11-27 09:59
难道?
这样才是对的?
动手试试呢 yuxijian2020 发表于 2022-11-27 10:10
动手试试呢
试了的,有一个测试点错了,但是仍然不知道是哪里的问题 我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信 tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信
啊这,我试试? tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信
果然是真的{:10_282:} tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信
这话说的就很不科学了,如果出题人在数据范围里骗人,那就是他有严重的问题了
其实问题在于 a 和 b 在32位有符号整数范围内不代表 a 的绝对值在32位有符号整数范围内 本帖最后由 tommyyu 于 2022-11-27 10:55 编辑
dolly_yos2 发表于 2022-11-27 10:49
这话说的就很不科学了,如果出题人在数据范围里骗人,那就是他有严重的问题了
其实问题在于 a 和 b 在32 ...
那这道题应该是你说的原因
我记得之前好像有一个csp考试说最大数据范围是2500,然后出了个2501的数据{:10_282:}
页:
[1]