Могу ли я использовать оператор 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");
}