Czy jest coś takiego:Co termin "pusta pętla" odnosi się dokładnie do C i C++?
for(;;)
{
statements;
}
czy jest to w ten sposób:
for(initialisation;condition;updation)
{
}
szukam odpowiedzi z odniesieniami do różnych źródeł.
Czy jest coś takiego:Co termin "pusta pętla" odnosi się dokładnie do C i C++?
for(;;)
{
statements;
}
czy jest to w ten sposób:
for(initialisation;condition;updation)
{
}
szukam odpowiedzi z odniesieniami do różnych źródeł.
Twój pierwszy przypadek (dla z pustymi wyrażeń) jest nieskończony pętla i druga (z pustym korpusie dla rachunku) jest pusty pętla
Dla rekordu, treść pustego lopa można również wyraźnie pominąć: 'for (initialization; condition, updation) ; ' –
@ Péter Tak, a puste wyrażenie nazywa się" wyciągiem zerowym ". Dotyczy również instrukcji "while". –
i dwa nie są mutexive: 'for (;;);' jest pustą nieskończoną pętlą! – ybungalobill
W moim środowisku to jest jak poniżej:
for(;;) { statements; }
nieskończonej pętli
for(initialisation;condition;updation) { }
pusta pętla
ona równa jest:
while (true) {
statements;
}
Nieskończony pętli jest pętla, która działa aż coś innego zatrzymuje ją.
To jest * nieskończona * pętla, nie pusta ... –
@Martin, skomentowałem samą odpowiedź, a nie Twój komentarz - przepraszam za zamieszanie :-) –
Dzięki, edytowana odpowiedź. –
Odpowiedź zależy od kontekstu.
Jeśli masz na myśli pustą dla pętlę, a następnie
for(;;)
{
statements;
}
coś takiego.
Choć to samo można osiągnąć za pomocą pętli while:
while(true)
{
statements;
}
i to nie jest „pusta” pętla. Obie są nieskończonymi pętlami, z których musisz zrezygnować używając break
wewnątrz pętli.
Z drugiej strony,
for(initialisation;condition;updation)
{
}
to jest „pusta” pętla bascially że nie robi nic, z wyjątkiem być może aktualizować kilka zmiennych, które mogą być zdefiniowane przed samej pętli.
Ostatnia pętla for może bardzo dobrze zrobić wiele rzeczy, ponieważ aktualizacja może mieć wiele różnych efektów ubocznych - jeśli chcesz, możesz umieścić w niej większość aplikacji. Zdecydowanie odradzam to z punktu widzenia łatwości konserwacji, ale zakładając, że ostatnie "w zasadzie nic nie robi", gdy znajdziesz taką pętlę w nieznanym kodzie, z pewnością nie jest to mądre. – Inca
Myślę, że musisz edytować, twierdzisz, że pierwsza pętla 'for' jest pusta i nie jest pusta. – unwind
Pusta pętla to pętla z pustym ciałem, np.
for(int i = 0; i < 10; ++i) {}
while(cin) {}
(zauważ, że drugi przykład tutaj okazuje się być nieograniczone)
Istnieją przypadki, w których te są przydatne, na przykład, gdy funkcja ta ma pożądany efekt uboczny i zwraca jego sukces, a powinien powtarzany aż powiedzie się, na przykład, aby przeczytać ostatni wiersz w pliku:
std::string getLastLine(std::string filename)
{
std::ifstream in(filename.c_str());
if(!in)
return "";
std::string line;
while(std::getline(in, line)); // empty loop, the operation returns the condition
return line;
}
Czytaj także: [? jest (pusty) nieskończona pętla niezdefiniowane zachowanie w C] (http: // stackoverflow.com/questions/15595493/is-an-empty-nieskończona pętla-undefined-behavior-in-c) – Deduplicator