【问题标题】:Syntax error in If-statement with or-expression带有 or 表达式的 If 语句中的语法错误
【发布时间】:2014-03-03 02:57:14
【问题描述】:

在我的 c++ 计算器代码中,我收到涉及以下子句中的 argc 变量的语法错误:

if (argc==4 || argv[3]="s"){
    result=no1 - no2;
    cout<<result<<endl;
    return 0;
} 

而以下具有相同结构的代码编译,

if ( a || b ){
    cout << "Line 2 - Condition is true"<< endl ;
}

我尝试将 if 表达式分解为两个单独的语句:

 if (argc==4)  
 {
if(argv[3]="s")
{
       result=no1 - no2;
       cout<<result<<endl;
       return 0;
 }
  }

但是如果执行calculator.exe 10 2 d命令,结果是8,这是不正确的。

我将不胜感激。

【问题讨论】:

  • 打开编译器警告

标签: c++ syntax arguments


【解决方案1】:

一个简单的错字:if (argc==4 || argv[3]="s"),第二个是赋值,并且永远是正确的。将其更改为测试相等性:

if (argc==4 || strcmp(argv[3], "s") == 0) //strcmp for c strings
                   ^^^

【讨论】:

  • 我想应该调用 strcmp 而不是 ==
  • 如果你想测试是否相等,应该是strcmp(argv[3], "s") == 0
  • 其实应该是'if (argc==4 || (strcmp(argv[3], "s") == 0))'
  • 结果还是8,结果应该是return 0 bcz argv是d,无效。
【解决方案2】:

"argc" 是 int 类型。但是 argv 是指针数组,它指向传递给程序的每个参数,并将它们存储为字符串。 你不能用 == 比较字符串。所以请改用 strcmp。

(strcpm(argv[3],"s")==0);  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多