gpt4 book ai didi

char *argv[] 到普通 C 中的浮点类型转换

转载 作者:行者123 更新时间:2023-11-30 20:32:48 24 4
gpt4 key购买 nike

我试图将 argv[1] 转换为浮点值,但最终出现编译错误。这是我的代码。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

double circleArea = 3.14159 * atof(argv[1]) * atof(argv[1]); //this works

double circleArea = 3.14159 * (double) argv[1] * (double) argv[1]; //this does not

return 0;

}`

为什么第一个语句可以编译而第二个语句不能编译?不应该(double) argv[1]atof(argv[1]) 一样有效?我希望能够用普通的 C 而不是 C++ 来完成此操作。

更新:这些是我收到的错误:

circleArea.c: In function ‘main’:
circleArea.c:9:2: error: pointer value used where a floating point value was expected
double area = 3.14159 * (double) argv[1] * (double) argv[1]; //this does not
^~~~~~
circleArea.c:9:2: error: pointer value used where a floating point value was expected

最佳答案

您看到的问题与转换/转换有关。在第二行中 - 您收到错误的地方 - 您需要将字符串转换为 double ,但您不是 - 您只是转换该值,即“告诉编译器您拥有的内容是double”,但不是。

在 C 中,类似类型的转换工作 - intfloatshortdouble floatlongcharint。当然,您可能会在某些转换中失去精度。但是,例如,您不能将 int [] 转换为 int (实际上,您可以,但肯定会得到意想不到的结果),因为它是一个数组,并且另一个是单个变量。

要使其正常工作,您应该使用 atod 函数。检查this post了解详情。

关于char *argv[] 到普通 C 中的浮点类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46929333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com