C++ 如何在C++;?

C++ 如何在C++;?,c++,C++,我知道如何使用sqrt函数获取数字的平方根 如何获得数字的立方根?x的第n个根等于x^(1/n),因此使用std::pow。但我不明白这与运算符重载有什么关系。包括 include <cmath> std::pow(n, 1./3.) 标准::功率(n,1./3) 此外,在C++11中,在相同的头中有cbrt .sqrt代表“平方根”,而“平方根”意味着提升到1/2的幂。没有“根为2的平方根”或“根为3的平方根”这样的东西。因为,你改变了第一个单词在您的案例中,您正在寻找如何执行

我知道如何使用
sqrt
函数获取数字的平方根


如何获得数字的立方根?

x的第n个根等于x^(1/n),因此使用
std::pow
。但我不明白这与运算符重载有什么关系。

包括
include <cmath>
std::pow(n, 1./3.)
标准::功率(n,1./3)
此外,在C++11中,在相同的头中有
cbrt


.

sqrt
代表“平方根”,而“平方根”意味着提升到
1/2
的幂。没有“根为2的平方根”或“根为3的平方根”这样的东西。因为,你改变了第一个单词在您的案例中,您正在寻找如何执行多维数据集根化

在C++11之前,没有特定的函数用于此,但您可以回到第一原则:

  • 平方根:
    std::pow(n,1/2.)
    (或)
  • 立方根:
    std::pow(n,1/3.)
    (或从C++11开始)
  • 第四根:
    std::pow(n,1/4.)
  • 等等

如果希望为
n
传递负值,请避免使用
std::pow
解决方案-,这就是添加
std::cbrt
的原因:

std::cout << std::pow(-8, 1/3.) << '\n';  // Output: -nan
std::cout << std::cbrt(-8)      << '\n';  // Output: -2

std::cout在C++11中
std::cbrt
作为math库的一部分引入,您可以

  • sqrt()
    不是运算符
  • 不能重载
    sqrt()

  • 请解释为什么您需要重载
    sqrt()
    ,以便我们可以帮助您做您想做的事情。

    我不鼓励上述任何方法,因为它们对我不起作用。我做了pow(64,1/3.)和pow(64,1/3.)但是我得到的答案是3
    这是我的逻辑


    事实上,这轮谈判必须让上述解决方案发挥作用

    正确的解决方案是


    ans=圆形(功率(n,1/3.)

    这个问题的解决方案是

    cube_root = pow(n,(float)1/3);
    
    您应该
    #包括
    库文件

    旧的C/C++标准不支持cbrt()函数。

    当我们编写类似于
    cube\u root=pow(n,1/3)的代码时
    编译器认为
    1/3=0
    (C/C++中的除法问题),因此需要使用
    (float)1/3
    进行类型转换以获得正确答案

    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    using namespace std;
    
    int main(){
    float n = 64 , cube_root ;
    clrscr();
    cube_root = pow(n , (float)1/3);
    cout<<"cube root = "<<cube_root<<endl;
    getch();
    return 0;
    }
    
    #包括
    #包括
    #包括
    使用名称空间std;
    int main(){
    float n=64,立方根;
    clrsc();
    立方根=功率(n,(浮点数)1/3);
    
    你的意思是立方根,而不是“根为3的平方根”。你可以使用pow(),幂为1/3-1:这个问题以前更好。现在很糟糕。“请引导我重载sqrt运算符”我们如何指导您创建SO问题?@C/C++中的Kotte 1/3是0,而不是三分之一。@LightnessRacesinOrbit我自己几乎将您的编辑回滚了。您的问题是一个非常不同的问题,尽管更合理。因为以前已经回答过,我相信它应该保持原样,并保持关闭。我的意思是Sqrt不是方形,例如Sqrt(4)=2;@HavaDarabi:我不明白。
    sqrt
    代表“平方根”,不管你喜欢与否,还有
    sqrt(4)
    2
    。请参阅-a基于
    pow的解决方案
    找不到负数的立方根。最好参考C++11解决方案.Net:-1/+1@LightnessRacesinOrbit已修复!@RichardSitze:
    std::cbrt(-8)
    导致
    -2
    。这就是他们添加它的原因。@Hava:
    sqrt
    不是“运算符”,并且您不能“过载”它用不同的参数来执行不同的事情。你的术语都是错误的。“哈瓦达巴里,不,你不需要这样做。例如,对于7的立方根,这个词会返回2.9129……而不是1.9129……这只是一个52.2%的Turbo C,不是C编译器,Turbo C++不是C++编译器。它们都是第一个C STAN的前。C++(C++)C++(98),它长时间不有效,C++或C++编译器都是无效的。Turbo C++比C++ 98年多,所以你的代码甚至不编译在C++编译器中(没有IoSurviv.h)。除了没有称为C/C++的语言外,它们是非常不同的语言,而且两种Turbo产品也不同。
    cbrt
    是C++11中的一个新函数,所以即使是兼容的C++98编译器也不支持它,更不用说非C++编译器了。为什么使用
    float
    除法,然后调用
    double
    函数呢?我怀疑这很容易被忽略表示负数。
    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    using namespace std;
    
    int main(){
    float n = 64 , cube_root ;
    clrscr();
    cube_root = pow(n , (float)1/3);
    cout<<"cube root = "<<cube_root<<endl;
    getch();
    return 0;
    }