Объявить переменную в операторе if (ANSI C)

Есть ли способ объявить переменную в операторе if (используя только ANSI C)?

Пример:

if(int variable = some_function())
{
    return 1;
}

person ARTAGE    schedule 26.04.2017    source источник
comment
Нет. Это не разрешено в C.   -  person BLUEPIXY    schedule 26.04.2017
comment
stackoverflow.com/questions/8474100/   -  person Jorge Cavaiuolo    schedule 26.04.2017
comment
Согласно грамматике ANSI C, грамматика для оператора if IF '(' expression ')' statement. expression не может преобразоваться в declaration, поэтому нет возможности поместить объявление в оператор if, как в вашем примере.   -  person Random Davis    schedule 26.04.2017
comment
Объявить переменную строго используя классическое объявление формата type var = value? Нет.   -  person sjsam    schedule 26.04.2017
comment
@RandomDavis Эта грамматика устарела (но это конкретное произведение не изменилось). Обратите внимание, что IF в этой грамматике относится к ключевому слову if (IF — это обычный идентификатор). Грамматика стандарта ISO C — это if ( выражение ) оператор или < b>if ( выражение ) оператор else заявление   -  person Keith Thompson    schedule 01.05.2020


Ответы (1)


Нет, вы не можете этого сделать.

Что вы можете сделать, так это создать блок только для if

    {
        int variable;
        variable = some_function();
        if (variable) return 1;
    }
    /* variable is out of scope here */

Обратите внимание, что для этого простого случая вы можете вызвать функцию как условие if (дополнительная переменная не требуется)

if (some_function()) return 1;
person pmg    schedule 26.04.2017