0

使用

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

{
    double number1, number2;
    char operator;

    number1 =atof (argv[0]);
    operator =argv[1];        // line 29
    number2 =atof (argv[2]);

编译器抱怨说

29 警告:赋值从没有强制转换的指针生成整数 [默认启用]

4

3 回答 3

3

argv[1] 是指向 char 的指针,您不能将其分配给 char。将运算符转换为 char * 或尝试 operator = *(argv[1]);

于 2012-12-10T11:21:37.397 回答
2
operator =argv[1];        // line 29

在这里,argv[1]是类型char*。但是operator是类型char。这就是出错的原因。

如果您只想获取从命令行传递的单个字符的运算符,则:

operator=argv[1][0];

会做。

请注意,最好strto*用于转换,因为ato*函数不会检测到错误。

于 2012-12-10T11:21:05.143 回答
2

变量operator是 typechar而是argv[1]type char *

一个是单个字符,另一个是指向字符的指针(即字符串)。

PS。即使它仅在使用纯 C 时有效,也应避免使用 C++ 关键字(如operator),因为这会使移植到 C++ 变得更加困难。

于 2012-12-10T11:21:11.023 回答