Alweer geen Excel

Zo zeker als 1 en 1 twee is

Arnout van Kempen schrijft in deze rubriek over pret maken met computers. Hij gooit het na een reeks over Pascal over een andere boeg en gaat aan de slag met C.

Een programmeertaal moet keuzes mogelijk maken, zagen we vorige week. Dit zou dus het perfecte moment zijn om over if-then-else te beginnen. Maar ik begin met een keuzemogelijkheid in C die ik persoonlijk gewoon heel erg mooi vind. Niet omdat het heel knap is of omdat er heel bijzondere dingen mee mogelijk zijn, maar omdat ik hou van de compactheid, de esthetische kant. Toen ik een blauwe maandag natuurkunde studeerde aan de TU/e (met bijzonder weinig succes overigens) liep er een wedstrijd die draaide om het schrijven van extreem compacte C-code, zo onleesbaar mogelijk, maar wel degelijk functioneel. Kortom, programmeren zoals een hobbyist, een amateur en erg onprofessioneel. Ik hou daar van.

In C noem je een teken als + of - een operator. Het doet iets met een of twee waarden, het voert een "operatie" uit op die waarden. Sommige operators, zoals ++ bijvoorbeeld, werken op één waarde en heten unaire operators, andere op twee, de binaire operators. Dus bijvoorbeeld:

#include <stdio.h>

int main() {
   int i = 1+1;  // + operator op twee waarden
   int a = i++;  // a == 2
   int b = ++i;  // b == 4
   return 0;
}

Er is echter een operator, de enige, in C die op drie waarden, of operanden, werkt. Die heet voor het gemak dan ook de ternaire operator. Deze ziet er uit als een vraagteken en het is een nogal compacte manier om te zeggen:

ALS operand1 = waar DAN is de uitkomst operand2 ANDERS operand3

In ons programmaatje hier voor zou dat er zo uit kunnen zien:

#include <stdio.h>

int main() {
   int i = 1+1;  // + operator op twee waarden
   int a = i++;  // a == 2
   int b = ++i;  // b == 4
   int c = (i == 5) ? 6 : 7;
   return 0;
}

Probeer het eerst te beredeneren, en probeer dan uit wat de waarde van c is.

Arnout van Kempen is naast computernerd ook directeur compliance & risk bij aaff. Hij schrijft op persoonlijke titel.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.