Jeżeli zbiór możliwych wartości jest skończony można zastąpić obliczenia lookup table
int factorial (int n) { // n! int i, f = 1; for (i = 2; i <= n; i++) f *= i; return f; }
int factorial (int n) { // n! // Table of factorials: static const int FactorialTable[13] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600}; if ((unsigned int)n < 13) return FactorialTable[n]; // Table lookup else return 0; // return 0 if out of range }
float a; bool b; a = b ? 1.0f : 2.5f;
float a; int b; static const float lookup[2] = {1.0f, 2.5f}; a = lookup[b];
int n; switch (n) { case 0: printf("Alpha"); break; case 1: printf("Beta"); break; case 2: printf("Gamma"); break; case 3: printf("Delta"); break; }
int n; static char const * const Greek[4] = { "Alpha", "Beta", "Gamma", "Delta" }; if ((unsigned int)n < 4) { printf(Greek[n]); }