Я думаю, что языки, которым они учат вас в наши дни, предназначены для того, чтобы надевать на вас наручники и гнить ваш мозг, так что вы просто молчите и соединяете блоки lego в очень ограниченной форме, в которой они должны соединяться, чтобы вы создали посредственнуювещи.Прелесть C в том, что вы можете следовать правилам и хитроумно получать то, что хотите.Вот как вы пишете этот цикл с дополнительными инициализаторами.Вот рабочий пример, который показывает, как соединить расширенный цикл с первым.Вы используете первый для пиратства его переменных, и они остаются в области видимости.Вы используете фиктивную переменную, чтобы внешний цикл запускался один раз.Умный компилятор заметит этот факт и обнулит цикл с помощью развертки цикла.Так что для вас это просто выгода.Затем второй массив использует некоторые переменные из первого объявления и второго объявления и выполняется до завершения.Это тривиальный пример, означающий, что вы сможете понять, как это сделать, не выполняя сложного броска в некотором объеме.Потому что эту технику можно использовать с макросами, когда они написаны таким образом, чтобы создать красивое перечисление структуры следующего поколения, например, «для значения в массиве do», которых у меня много.
#include "stdio.h"
int
main(int argc, char **argv)
{
const int max=7;
const char *array[7] = {
"hello","you","kids","who","don't","know","malloc\n"
};
for(int i=0,count=max,$=1;$;$=0)
for(const char **p=array;count<max;i++)
{
printf("%s ",p[i]);
}
}
Естьздесь ничего не пропало.Этот метод объединения цикла с циклом one shot for был использован для встраивания в вызов, чтобы получить перечислитель для этого хэш-объекта, и запуска перечисления, чтобы получить значения, извлеченные для ключа и значения, а также для удобства созданияони как пустые указатели для пользователя, он просто должен назвать их.Затем они заполняются, и перечисление продолжается до тех пор, пока все ключи и значения не будут выполнены.Если пользователь прерывает итерацию, весь каскад циклов однокадрового разваливания развалится так, как нам хотелось бы, потому что их, вероятно, даже нет, поскольку они были созданы с простыми операциями, которые, как может видеть компилятор, развернут цикл.Таким образом, в основном это позволяет вам расширить синтаксис, чтобы делать такие вещи без штрафа.
Но вам нужно немного знать C и, по крайней мере, вытащить голову из коробки робота, в которую его помещают школыв эти дни с этими игрушечными языками.