4

我正在研究c++中的函数重载,我在程序中看到了一个模棱两可的情况,

long add(long a){
    long b = a;
    return b;
}

double add(double a){
    double b = a;
    return b;
}

int main(){
    int x;
    x = add(10);
    printf("x : %d", x);
    getch();
    return 0;   
}

书中给出的模棱两可的原因是,编译器可以转换intinlong或 in double。所以编译器会产生错误。我运行它,结果是一样的,错误

那么如何longdouble等价的?这里模棱两可的实际原因是什么?

4

1 回答 1

3

并不是longdouble本身是等价的,而是转换规则 int->longint->double具有等价的优先级,所以编译器在这两个选项的存在下都面临着歧义。

于 2016-06-01T09:26:04.113 回答