Zanim zajmiemy się pytaniem Davida, przypomnijmy, że { } może być używane do tworzenia tak zwanych „instrukcji złożonych”. Jest to mechanizm używany przez język programowania C do grupowania wielu instrukcji w coś, co można uznać za pojedynczą instrukcję.
Rozważmy na przykład, co się stanie, gdy zdefiniujemy funkcję o nazwie MyFunction ():
void MyFunction ()
{
// Udawaj, że ten komentarz jest oświadczeniem
// Udawaj, że ten komentarz jest oświadczeniem
// Udawaj, że ten komentarz jest oświadczeniem
}
Kiedy wywołujemy tę funkcję z innego miejsca w programie, komputer „widzi” wszystkie instrukcje w funkcji jako tworzące jedną logiczną całość.
To samo dzieje się, gdy używamy { } wraz z instrukcją sterującą, taką jak if (). Po pierwsze, załóżmy, że jeśli warunek jest prawdziwy, chcemy wykonać tylko jedną akcję, w którym to przypadku moglibyśmy napisać to w następujący sposób:
if (done == true)
fred = fred + 1;
Zakładamy oczywiście, że zmienne done i fred zostały zadeklarowane w innym miejscu programu. Załóżmy teraz, że chcemy wykonać kilka akcji, jeśli nasz warunek jest prawdziwy. Można to zrobić w następujący sposób:
if (done == true) fred = fred + 1;
if (done == true) jane = jane – 1;
if (done == true) bert = fred + jane;
Oprócz tego, że wygląda to głupio, jest to nieefektywne, ponieważ wykonujemy ten sam test trzy razy. Ten przykład wzywa nas do użycia instrukcji złożonej w następujący sposób:
if (done == true) // Równe powyższemu
{
fred = fred + 1;
jane = jane – 1;
bert = fred + jane;
}
W tym przypadku złożone oświadczenie jest zarówno bardziej wydajne, jak i jaśniejsze, co próbujemy osiągnąć.