2011-12-26 4 views
0

Я пытаюсь использовать этот базовый блок кода для ознакомления с условными выражениями. Я не думаю, что мне не хватало скобки или чего-то еще, однако я получаю сообщение об ошибке, что мне не хватает утверждения перед предложением second else, но я этого не понимаю.Отсутствует заявление перед другим

#include stdio.h; 
main() 
{ 
    int a = 2; 
    int b = 4; 
    int c = 6; 
    int d = 8; 
    if (a > b) 
    { 
     a = a - 1; 
     printf("a = %d ", a); 
    } 
    else 
    { 
     if (b >= c) 
     { 
      b == b ? : 2; 
     } 
     printf("b = %d ", b); 
    } 
    else 
    { 
     if (c > d) 
     { 
      c = c + d; 
     } 
    } 
    else 
    { 
     d = d/2; 
    } 
} 

Любые предложения?

+0

Недостаток кажется ненужным ... –

ответ

1

Этот код является таким же, как у вас, с отступом в одном из нескольких более ортодоксальных стилей.

int main(void) 
{ 
    int a = 2; 
    int b = 4; 
    int c = 6; 
    int d = 8; 

    if (a > b)  
    { 
     a = a - 1; 
     printf("a = %d ", a); 
    } 
    else 
    { 
     if (b >= c) 
     { 
      b == b ? : 2; // Syntax errors here too (and statement with no effect?) 
     } 
     printf("b = %d ", b); 
    } 
    else 
    { 
     if (c > d) 
     { 
      c = c + d; 
     } 
    } 
    else 
    { 
     d = d/2; 
    } 
} 

Как вы можете видеть, есть 3 последовательные else статьи, где разрешаются иметь только один.

Существуют и другие проблемы с синтаксисом.

3

Если вы правильно отступы код, вы увидите проблему:

} else { 
    if (c > d) { 
     c = c + d; 
    } 
} else { 
    d = d/2; 
} 
+0

Я не вижу проблемы? Если это внутри, а другое - самодостаточно? –

+0

@SonnyOrdell: Нет; 'if' не с' else', так как в середине есть дополнительный '}'. Обратите внимание на отступы. – SLaks

+0

. Если внутри внутри else, так как c = c + d окружен в круглых скобках, и это все, если блок находится в круглых скобках для предложения else? –

0

В программировании C если .. еще .. как этот

if(condition 1) 
     statement1; 
    else if(condition 2) 
     statement2; 
    else if(condition 3) 
     statement3; 
    else 
     statement4; 
1

Структура C может иметь только один еще заявление для если заявление. Вместо этого он может иметь несколько elseif-операторов. Добавление большего количества операторов else для оператора if сообщит об ошибке в ее синтаксисе.

Ошибка в вашей программе заявляет, что второй должен иметь a, если перед ним. Итак, конвертируйте все свои операторы промежуточного else с вложенными if в elseif-операторы. Оставьте последнюю инструкцию else, вы можете выйти из этой ошибки.

Смежные вопросы