Ожидается ошибка оператора при использовании else, если - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь увидеть вывод, но он всегда возвращает сообщение об ошибке «ожидаемый оператор». Буду признателен за любую помощь, спасибо.

#include <iostream>

#include "stdafx.h"

using namespace std;

int main() {
  int const n = 6;

  int A[n] = {1, -2, 3, -4, 5, -6}, i, p, x;
  int T[n] = {1, 3, 5};
  int U[n] = {-2, -4, -6};

  p = 1;
  x = 1;

  for (i = 0; i < n; i++) {
    if (A[i] < 0) p = p * U[i] * U[i];
    cout << "Test" << p << "\n";

    else if (A[i] > 0) {
      x = x * T[i] * T[i] * T[i];

      cout << "Test2" << X << "\n";
    }
  }
  return 0
}

Ответы [ 3 ]

1 голос
/ 21 апреля 2020

Все просто, вам не хватает {}

if (A[i] < 0)
{                          // <--- here
    p = p * U[i] * U[i];
    cout << "Test" << p << "\n";
}                          // <--- and here
else if (A[i] > 0)
{ 
    x = x * T[i] * T[i] * T[i];
    cout << "Test2" << X << "\n";
}
1 голос
/ 21 апреля 2020

Вы всегда должны использовать {} при написании операторов if-else, чтобы избежать такого рода проблем:

if (A[i] < 0)
{
    p = p * U[i] * U[i];
    cout << "Test" << p << "\n";
}
else if (A[i] > 0)
{ 
    x = x * T[i] * T[i] * T[i];
    cout << "Test2" << X << "\n";
}

В вашем коде у вас есть это:

if (A[i] < 0)
    p = p * U[i] * U[i];
    cout << "Test" << p << "\n"; // this is not part of the if

Следовательно else не соответствует ни одному if, что приводит к синтаксической ошибке.

0 голосов
/ 21 апреля 2020

В C и C ++ if применяется к следующему выражению . Поэтому, когда вы пишете

if (A[i] < 0)
p = p * U[i] * U[i];
cout << "Test" << p << "\n";

, if применяется к p = ..., который является следующим оператором, а не применяется к после этого оператора cout << ....

Чтобы превратить два оператора в один, используйте составной оператор :

if (A[i] < 0)
{
p = p * U[i] * U[i];
cout << "Test" << p << "\n";
}

Две фигурные скобки обозначают составной оператор, который равен one заявление, и if применяется ко всему этому утверждению.

...