【问题标题】:else if expected expression c++ / Xcodeelse if 期望表达式 c++ / Xcode
【发布时间】:2015-04-29 12:54:48
【问题描述】:

我在论坛上看到过这个问题,但我无法解决这个问题。毕竟“else if”Xcode 无法编译,它告诉我这是一个“解析问题”并且需要一个“预期表达式”。

我知道这是一个初学者的问题,但我真的很想了解我的代码有什么问题,为什么它总是在每个 esle 之后告诉我预期的表达式 if...


if (TypeStrat == 1)
    {
        cout << "Quel est le prix d'exercice du long Call ?" << endl;
        cin >> K1;
        cout << "Quel est le prix d'exercice du long Put ?" << endl;
        cin >> K2;

        cout << "Prix de la stratégie " << (BSPrixCall(S,K,T,r,v) + BSPrixPut(S,K,T,r,v)) << endl;
        cout << "Delta " << (BSDeltaCall(S,K,T,r,v) + BSDeltaPut(S,K,T,r,v)) << endl;
        cout << "Vega  " << (2*BSVega(S,K,T,r,v))         << endl;
        cout << "Rho   " << (BSRhoCall(S,K,T,r,v) + BSRhoPut(S,K,T,r,v))   << endl;
        cout << "Theta " << (BSThetaCall(S,K,T,r,v)/365.0) + (BSThetaPut(S,K,T,r,v)/365.0)
        << "journalier" << endl;

        else if (TypeStrat == 2)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K2;

            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) + BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) + BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) + BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) + BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) + (BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }

        else if (TypeStrat == 3)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du short Call ?" << endl;
            cin >> K2;

            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) - BSPrixCall(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) - BSDeltaCall(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) - BSRhoCall(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) - (BSThetaCall(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }

        else if (TypeStrat == 4)
        {
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du short Put ?" << endl;
            cin >> K2;

            cout << "Prix de la stratégie " << (BSPrixPut(S,K1,T,r,v) - BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaPut(S,K1,T,r,v) - BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoPut(S,K1,T,r,v) - BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaPut(S,K1,T,r,v)/365.0) - (BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }

        else if (TypeStrat == 5)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice des deux short Call ?" << endl;
            cin >> K2;

            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) - 2*BSPrixCall(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) - 2*BSDeltaCall(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - 2*BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) - 2*BSRhoCall(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) - 2*(BSThetaCall(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }

        else if (TypeStrat == 6)
        {
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice des deux short Put ?" << endl;
            cin >> K2;

            cout << "Prix de la stratégie " << (BSPrixPut(S,K1,T,r,v) - 2*BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaPut(S,K1,T,r,v) - 2*BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - 2*BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoPut(S,K1,T,r,v) - 2*BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaPut(S,K1,T,r,v)/365.0) - 2*(BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }

    }

【问题讨论】:

  • 你有没有想到格式很奇怪?你有没有想过为什么会这样?

标签: c++ ios xcode


【解决方案1】:

else if 需要前面的 if 语句。第一个 else if 之前的 if 语句块未关闭,即缺少结尾大括号 }。此外,最后还有一个额外的}

缺少大括号:

if (TypeStrat == 1)
{
    cout << "Quel est le prix d'exercice du long Call ?" << endl;
    cin >> K1;
    cout << "Quel est le prix d'exercice du long Put ?" << endl;
    cin >> K2;

    cout << "Prix de la stratégie " << (BSPrixCall(S,K,T,r,v) + BSPrixPut(S,K,T,r,v)) << endl;
    cout << "Delta " << (BSDeltaCall(S,K,T,r,v) + BSDeltaPut(S,K,T,r,v)) << endl;
    cout << "Vega  " << (2*BSVega(S,K,T,r,v))         << endl;
    cout << "Rho   " << (BSRhoCall(S,K,T,r,v) + BSRhoPut(S,K,T,r,v))   << endl;
    cout << "Theta " << (BSThetaCall(S,K,T,r,v)/365.0) + (BSThetaPut(S,K,T,r,v)/365.0)
    << "journalier" << endl;

 //  }  <-- Insert ending curly brace here
    else if (TypeStrat == 2)

大括号:

else if (TypeStrat == 6)
    {
        cout << "Quel est le prix d'exercice du long Put ?" << endl;
        cin >> K1;
        cout << "Quel est le prix d'exercice des deux short Put ?" << endl;
        cin >> K2;

        cout << "Prix de la stratégie " << (BSPrixPut(S,K1,T,r,v) - 2*BSPrixPut(S,K2,T,r,v)) << endl;
        cout << "Delta " << (BSDeltaPut(S,K1,T,r,v) - 2*BSDeltaPut(S,K2,T,r,v)) << endl;
        cout << "Vega  " << (BSVega(S,K1,T,r,v) - 2*BSVega(S,K2,T,r,v))       << endl;
        cout << "Rho   " << (BSRhoPut(S,K1,T,r,v) - 2*BSRhoPut(S,K2,T,r,v))   << endl;
        cout << "Theta " << (BSThetaPut(S,K1,T,r,v)/365.0) - 2*(BSThetaPut(S,K2,T,r,v)/365.0)
        << "journalier" << endl;
    }

}     //   <-- Remove this extra curly brace

【讨论】:

    【解决方案2】:

    看起来} 放错了地方。以下是您的意图。从末尾删除 } 并在 else if (TypeStrat == 2) 之前添加

        if (TypeStrat == 1)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixCall(S,K,T,r,v) + BSPrixPut(S,K,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K,T,r,v) + BSDeltaPut(S,K,T,r,v)) << endl;
            cout << "Vega  " << (2*BSVega(S,K,T,r,v))         << endl;
            cout << "Rho   " << (BSRhoCall(S,K,T,r,v) + BSRhoPut(S,K,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K,T,r,v)/365.0) + (BSThetaPut(S,K,T,r,v)/365.0)
        << "journalier" << endl;
        }
        else if (TypeStrat == 2)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) + BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) + BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) + BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) + BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) + (BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }
    
        else if (TypeStrat == 3)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du short Call ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) - BSPrixCall(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) - BSDeltaCall(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) - BSRhoCall(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) - (BSThetaCall(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }
    
        else if (TypeStrat == 4)
        {
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice du short Put ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixPut(S,K1,T,r,v) - BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaPut(S,K1,T,r,v) - BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoPut(S,K1,T,r,v) - BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaPut(S,K1,T,r,v)/365.0) - (BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }
    
        else if (TypeStrat == 5)
        {
            cout << "Quel est le prix d'exercice du long Call ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice des deux short Call ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixCall(S,K1,T,r,v) - 2*BSPrixCall(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaCall(S,K1,T,r,v) - 2*BSDeltaCall(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - 2*BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoCall(S,K1,T,r,v) - 2*BSRhoCall(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaCall(S,K1,T,r,v)/365.0) - 2*(BSThetaCall(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }
    
        else if (TypeStrat == 6)
        {
            cout << "Quel est le prix d'exercice du long Put ?" << endl;
            cin >> K1;
            cout << "Quel est le prix d'exercice des deux short Put ?" << endl;
            cin >> K2;
    
            cout << "Prix de la stratégie " << (BSPrixPut(S,K1,T,r,v) - 2*BSPrixPut(S,K2,T,r,v)) << endl;
            cout << "Delta " << (BSDeltaPut(S,K1,T,r,v) - 2*BSDeltaPut(S,K2,T,r,v)) << endl;
            cout << "Vega  " << (BSVega(S,K1,T,r,v) - 2*BSVega(S,K2,T,r,v))       << endl;
            cout << "Rho   " << (BSRhoPut(S,K1,T,r,v) - 2*BSRhoPut(S,K2,T,r,v))   << endl;
            cout << "Theta " << (BSThetaPut(S,K1,T,r,v)/365.0) - 2*(BSThetaPut(S,K2,T,r,v)/365.0)
            << "journalier" << endl;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多