Могу ли я использовать оператор if в качестве условия в другом операторе if в C? - PullRequest
0 голосов
/ 22 февраля 2020

Могу ли я это сделать? Я искал ответ, но не смог найти. Я хочу сделать следующее:

if(a==5)
{
   printf("25");
}

if((if(a==5))==TRUE)
{
    printf("\n30");
}

Это допустимо в C?

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Могу ли я использовать оператор if как условие в другом операторе if в C?

Нет, вы не можете этого сделать, это не является синтаксически правильным. Вы получите эту или аналогичную ошибку для внутреннего if теста, если попытаетесь скомпилировать код, который встречается в исходном коде:

error: ожидаемое выражение перед 'if '

Но это уже избыточно, поскольку вы можете проверить несколько выражений внутри только одного условия условия if с помощью операторов logi c && (AND) и || (ИЛИ):

int a = 5;
int b = 10;

if(a == 5 && b == 10)     // If a is 5 AND b is 10. - true
{
    /* some code */
}

или

int a = 6;
int b = 10;

if(a == 5 || b == 10)     // If a is 5 OR b is 10. - true
{
    /* some code */
}

Для вашего примера:

if(a==5)
{
   printf("25");
}

if((if(a==5))==TRUE)
{
    printf("\n30");
}

Внутренний оператор if внутри условия внешний оператор if - if((if(a==5)) == TRUE) недопустим, но также является избыточным, поскольку оператор if самостоятельно подтверждает, является ли условие или подвыражение истинным или нет.

Таким образом, if((if(a==5)) == TRUE), if((a==5) == TRUE) и if(a==5) были бы все эквивалентны, если бы if условие условия внутри условия другого было бы допустимо, и оператор if должен как-то оцениваться как 1.

Так даже в этом сюрреалистическом случае код в экзамене Ле будет эквивалентно:

if(a==5)
{
   printf("25");
   printf("\n30");
}
0 голосов
/ 22 февраля 2020

Этот

if(a==5)
{
   printf("25");
}

if((if(a==5))==TRUE)
{
    printf("\n30");
}

можно переписать таким образом, сохранив те же логи c

int condition;

if( ( condition = a == 5 ) )
{
   printf("25");
}

if( condition )
{
    printf("\n30");
}
...