麻烦与argc和argv

MrP*_*le5 0 c++ argv argc

尝试向我的程序添加命令行参数.所以我正在进行实验,无法弄清楚这对我生命的智能警告.它继续说它期待')',但我不知道为什么.

这是它不喜欢的代码:

    // Calculate average
    average = sum / ( argc – 1 );   
Run Code Online (Sandbox Code Playgroud)

然后它强调减法运算符.以下是完整的计划.

#include <iostream>

int main( int argc, char *argv[] )
{
    float average;
    int sum = 0;

    // Valid number of arguments?
    if ( argc > 1 ) 
    {
       // Loop through arguments ignoring the first which is
       // the name and path of this program
       for ( int i = 1; i < argc; i++ ) 
       {
           // Convert cString to int 
           sum += atoi( argv[i] );    
       }

       // Calculate average
       average = sum / ( argc – 1 );       
       std::cout << "\nSum: " << sum << '\n'
              << "Average: " << average << std::endl;
   }
   else
   {
   // If invalid number of arguments, display error message
       // and usage syntax
       std::cout << "Error: No arguments\n" 
         << "Syntax: command_line [space delimted numbers]" 
         << std::endl;
   }

return 0;
Run Code Online (Sandbox Code Playgroud)

}

jua*_*nza 9

你认为是减号的字符是别的,所以它不被解析为减法运算符.

你的版本:

average = sum / ( argc – 1 ); 
Run Code Online (Sandbox Code Playgroud)

正确版本(剪切并粘贴到您的代码中):

average = sum / ( argc - 1 ); 
Run Code Online (Sandbox Code Playgroud)

请注意,使用整数计算平均值可能不是最佳方法.您在RHS上有整数运算,然后float在LHS上分配.您应该使用浮点类型执行除法.例:

#include <iostream>

int main()
{
  std::cout << float((3)/5) << "\n"; // int division to FP: prints 0!
  std::cout << float(3)/5 << "\n";   // FP division: prints 0.6
}
Run Code Online (Sandbox Code Playgroud)

  • @ MrPickle5:"神圣的废话.哇.非常感谢你!!!!!" 表达最佳[通过单击答案左侧的复选框轮廓.](http://stackoverflow.com/faq/#howtoask) (3认同)
  • @ g-makulik:他的程序中有一个奇怪的非ascii unicode字符,看起来像一个减号,但不是 (2认同)
  • +1对于不屈不挠的同形异义词观察员! (2认同)