не компилируется в C, хотя компилируется как программа C ++. Однако если после метки поместить нулевой оператор, программа компилируется. <, / P>

смущен, когда это не скомпилируется в C:

int main()
{
    for (int i = 0; i < 4; ++i)
        int a = 5; // A dependent statement may not be declaration

    return 0;
}

Я привык к C ++, где это будет компилироваться. Я просто какое-то время удивлялся, пока не вспомнил ответ здесь на SO о том, как в C и C ++ разные вещи считаются «утверждениями». Это было в отношении заявления переключения. «Оператор» после скобок цикла for должен присутствовать как в C, так и в C ++. Это можно сделать либо добавив точку с запятой, либо создав квадратный блок скобок {}.

В C ++ "int a = 7;" считается объявлением, определением и инициализацией. В C я считаю, что это также считается все это, однако в C это не считается "заявление".

Может кто-то точно уточнить, почему в C это не утверждение, а в C ++ это? Это сбивает с толку мою концепцию того, что такое утверждение, потому что один язык говорит, что это так, а другой говорит, что это не так, поэтому я немного растерялся.

Ответы на вопрос(4)

Ваш ответ на вопрос