使用
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++ 变得更加困难。