#include <stdio.h> #include <stdint.h> #include <stdlib.h> void fizzbuzz(int i) { uint32_t r3 = i % 3; uint32_t r5 = i % 5; uint32_t is_nonzero_3 = (r3 | -r3) >> 31; uint32_t is_nonzero_5 = (r5 | -r5) >> 31; uint32_t is_zero_3 = is_nonzero_3 ^ 1; uint32_t is_zero_5 = is_nonzero_5 ^ 1; uint32_t idx = (is_zero_5 << 1) | is_zero_3; const char *fmt[] = { "%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n" }; printf(fmt[idx], i); } typedef void (*func_t)(int); void run_loop(int i); void stop_loop(int i) { exit(0); } func_t actions[] = { stop_loop, run_loop }; void run_loop(int i) { fizzbuzz(i); int d = 99 - i; uint32_t is_neg = ((uint32_t)d) >> 31; } func_t actions_table[] = { run_loop, stop_loop }; void run_loop_wrapper(int i) { fizzbuzz(i); int d = 99 - i; uint32_t is_neg = ((uint32_t)d) >> 31; actions_table[is_neg](i + 1); } int main() { actions_table[0] = run_loop_wrapper; run_loop_wrapper(1); return 0; }