运行过程中传递的参数的平方根

Square root from parameter passing during the run

本文关键字:参数 平方根 过程中 运行      更新时间:2023-10-16

我是C/C++语言的新手,我想问一个简单的问题。我写了以下代码:

#include <stdio.h>
#include <math.h>
int main(int argc, char ** argv){
    printf("Square root from %f is %f", argv[1], sqrt(argv[1]));
}

但它不起作用,因为argv[1]的类型为char*。如何将argv[1]强制转换为double,如果不可能,则抛出异常?

最简单的解决方案是使用atof。因此,你会写这样的东西:

printf("Square root from %s is %f", argv[1], sqrt(atof(argv[1])));

当然,你可以考虑更高级别的替代方案,比如C++11的std::stod,但对于这个简单的例子来说,这可能有些过头了,但如果你以后坚持使用C++代码,我会写这篇文章,如果我是你的话:

std::string myString = argv[1];
std::cout << "Square root from " << argv[1] << " is "
          << std::sqrt(std::stod(myString)) << std::endl;

您还需要将第一个占位符更改为%s,因为您要在其中打印第一个参数,这就像您编写字符串一样。

在您的最终代码中,在尝试访问字符串数组的第二项之前,还请确保argc至少为2。