使用
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 警告:赋值从没有强制转换的指针生成整数 [默认启用]
使用
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 警告:赋值从没有强制转换的指针生成整数 [默认启用]
argv[1] 是指向 char 的指针,您不能将其分配给 char。将运算符转换为 char * 或尝试 operator = *(argv[1]);
operator =argv[1]; // line 29
在这里,argv[1]
是类型char*
。但是operator
是类型char
。这就是出错的原因。
如果您只想获取从命令行传递的单个字符的运算符,则:
operator=argv[1][0];
会做。
请注意,最好strto*
用于转换,因为ato*
函数不会检测到错误。
变量operator
是 typechar
而是argv[1]
type char *
。
一个是单个字符,另一个是指向字符的指针(即字符串)。
PS。即使它仅在使用纯 C 时有效,也应避免使用 C++ 关键字(如operator
),因为这会使移植到 C++ 变得更加困难。