当你准备C++使用#define abs(x) x<0?-x:x时请小心

如果其中的参数是表达式,由于是宏替换,比如abs(a+b),当a+b<0时,返回值会是-a+b。
Orz我的AC率啊

3 条评论

  • @ 2016-08-25 17:17:40

    讲道理,我不相信手写的abs会比cmath快到哪里去。
    那可是用汇编写的啊。。。

  • @ 2016-03-06 22:53:03

    加个括号吧
    c
    #define abs(x) (x)<0?-(x):(x)

    • @ 2016-03-07 14:53:08

      啊对的这样也可以,然而我的解决方案是直接每次abs((a-b));。。。。

  • @ 2016-03-04 23:56:16

    c++可以用内联函数

    • @ 2016-03-05 07:42:32

      只是说如果不用inline的时候罢了。。、

  • 1

信息

ID
1153
难度
7
分类
动态规划 | 背包 点击显示
标签
递交数
4721
已通过
1027
通过率
22%
被复制
6
上传者