2016-12-15 2 views
-2

Wenn ich eine Funktion wiebedingte Operation

f1 (int a) 
{ 
    a = a % 2 ? a + 2 : a; 
    printf(”%c ” , ’a’ + a); 
} 

und ich rufe f1 (0) Was macht ein% 2 als Bedingung bedeuten?

+0

'%' = Modul Operator und Rest nach einer ganzzahligen Division. 'a = a% 2? a + 2: a; 'expandiert zu a = Wenn a/2 eine Erinnerung hat, dann a + 2 else a' – bansi

+2

Warum hat Ihr Code seltsame Abstände? Oder sollte ich sagen, warum hat Ihr Code "w e i rd s p a c i n g"? –

+1

auch die seltsamen Anführungszeichen '' 'sieht aus wie Word mit automatischer Rechtschreibprüfung aktiviert wird für die Code-Bearbeitung verwendet. – bansi

Antwort

1

Es prüft, ob a gerade oder ungerade ist.

a % 2 gibt Rest nach a durch 2, d.h. 0 für gerade Zahlen und 1 für ungerade Zahlen. Und dann wird 0 oder 1 als Bedingungsausdruck im ternären Operator ?: verwendet, um entweder den ersten Ausdruck oder den zweiten Ausdruck als endgültiges Ausdrucksergebnis zu verwenden.