鱼C论坛

 找回密码
 立即注册
查看: 2130|回复: 12

[已解决]C++中的 abs 函数会不会出问题?

[复制链接]
发表于 2022-11-27 09:50:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有一次做题(https://www.luogu.com.cn/problem/P8869),用自带的 abs 错了,手写 abs 没有错,这是什么原因?

是自带的 abs 有什么问题吗?感谢解答
最佳答案
2022-11-27 10:24:05
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-27 09:53:55 | 显示全部楼层
talk is cheap,show me the code
出错的代码呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 09:55:44 | 显示全部楼层
yuxijian2020 发表于 2022-11-27 09:53
talk is cheap,show me the code
出错的代码呢

here:
  1. #include <bits/stdc++.h>

  2. using namespace std;

  3. int h, w;
  4. int main() {
  5.         scanf("%d%d", &h, &w);
  6.         if (w > 0) printf("%d", abs(h));
  7.         else printf("%d", -abs(h));
  8.         return 0;
  9. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 09:58:50 | 显示全部楼层
  1. printf("%d", -abs(h));
复制代码

你以为数学公式呢?   能这么用负号?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 09:59:38 | 显示全部楼层
yuxijian2020 发表于 2022-11-27 09:58
你以为数学公式呢?   能这么用负号?

难道?
  1. printf("%d", -(abs(h)));
复制代码

这样才是对的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 10:04:31 | 显示全部楼层
yuxijian2020 发表于 2022-11-27 09:58
你以为数学公式呢?   能这么用负号?

也不对啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 10:10:06 | 显示全部楼层
zhangjinxuan 发表于 2022-11-27 09:59
难道?

这样才是对的?

动手试试呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 10:12:20 | 显示全部楼层

试了的,有一个测试点错了,但是仍然不知道是哪里的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 10:24:05 | 显示全部楼层    本楼为最佳答案   
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 10:27:11 | 显示全部楼层
tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信

啊这,我试试?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-27 10:32:22 | 显示全部楼层
tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信

果然是真的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 10:49:51 | 显示全部楼层
tommyyu 发表于 2022-11-27 10:24
我用 long long 就全部 AC 了,有些题目非常喜欢阴人,即使他说了数据在32为整数以内也不能信

这话说的就很不科学了,如果出题人在数据范围里骗人,那就是他有严重的问题了
其实问题在于 a 和 b 在32位有符号整数范围内不代表 a 的绝对值在32位有符号整数范围内
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-27 10:50:34 | 显示全部楼层
本帖最后由 tommyyu 于 2022-11-27 10:55 编辑
dolly_yos2 发表于 2022-11-27 10:49
这话说的就很不科学了,如果出题人在数据范围里骗人,那就是他有严重的问题了
其实问题在于 a 和 b 在32 ...


那这道题应该是你说的原因

我记得之前好像有一个csp考试说最大数据范围是2500,然后出了个2501的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表