尝试向我的程序添加命令行参数.所以我正在进行实验,无法弄清楚这对我生命的智能警告.它继续说它期待')',但我不知道为什么.
这是它不喜欢的代码:
// 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)
}
你认为是减号的字符是别的,所以它不被解析为减法运算符.
你的版本:
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)