In der alten Syntax von “if” musste man zwei Schritte verwenden:

f = x > y;
if f;
//  code wenn if gleich wahr...

endif;

In der Variablen “f” wird gespeichert ob “x > y” wahr ist (1) oder nicht (0). Mit “if f;” wird dann entsprechend verzweigt und im wahr Fall der Code im if Block ausgeführt.

Die neue alternative Syntax sieht so aus:

if f = x > y;
//  code wenn if gleich wahr...

endif;

Man braucht einen Schritt weniger. Die Hilfsvariable “f” wird aber immer noch benötigt!

Im foglenden Beispiel werden drei Variablen (x, y und z) geprüft auf “> max”:

// if.nanoc

func main ()
    int null = 0; int one = 1;
    int f; int a; int b; int c;
    
    int x = 8; int y = 6; int z = 10; int max = 5;

    if f = x > y;
        print "x > max"; printn one;
    else;
        print "x <= max"; printn one;
    endif;

    a = x > max; b = y > max; c = z > max;
    if f = a && b && c;
        print "[x > max] and [y > max] and [z > max]"; printn one;
    else;
        print "at least one of: x y z is less max!"; printn one;
    endif;
    
    exit null;
funcend

Es werden mit a, b und c die Variablen x, y und z geprüft (> max). Der “if” Befehl verknüpft die Wahrheitswerte mit dem logischen und (&&). Nur wenn alle Variablen größer als “max” sind ist der “if” Ausdruck wahr. Wenn er nicht wahr ist, dann wird der “else” Block ausgeführt.

Die if, else, endif Blöcke kann man ineinander verschachteln und somit komplexe Verzweigungen im Programm ermöglichen.