相关疑难解决方法(0)

std :: abs(0u)是不是形成了?

鉴于以下计划:

#include <cmath>

int main()
{
    std::abs(0u) ;
}
Run Code Online (Sandbox Code Playgroud)

gcc并且clang不同意这是否是不正确的.使用gcclibstdc++代码建立无错误或警告(见直播),同时采用clanglibc++它生成以下错误(见直播):

error: call to 'abs' is ambiguous
std::abs(0u) ;
^~~~~~~~
Run Code Online (Sandbox Code Playgroud)

哪个结果是正确的?应该abs(0u)是暧昧与否?


MSalters指出了一个有趣的相关问题:std :: abs的模板版本.

c++ cmath language-lawyer c++11

16
推荐指数
1
解决办法
1971
查看次数

g++ 错误:重载“abs(unsigned int)”的调用不明确

我正在尝试编译以下代码:

#include <stdlib.h>
static
unsigned iSqr( unsigned i )
{
    unsigned res1 = 2;
    unsigned res2 = i/res1;
    while( abs( res1 - res2 ) > 1 )
        {
        res1 = (res1 + res2)/2;
        res2 = i/res1;
        }
    return res1 < res2 ? res1 : res2;
}
Run Code Online (Sandbox Code Playgroud)

使用g++ test.cc -o test

但是,g++ 编译器失败并出现以下错误:

test.cc: In function 'unsigned int iSqr(unsigned int)':                                         
test.cc:8:29: error: call of overloaded 'abs(unsigned int)' is ambiguous                        
     while( abs( res1 - res2 ) > 1 )            
                             ^ …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors g++ std

3
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

c++11 ×1

cmath ×1

compiler-errors ×1

g++ ×1

language-lawyer ×1

std ×1