Practical C Programs
Config Defaults
A small program can start from defaults and apply an explicit override before computing derived settings.
default value
Defaults give the program a predictable baseline when no override is supplied.
derived setting
After validation, later calculations can use one resolved value instead of repeating fallback logic.
Config Defaults
config_defaults.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
int main(void) {
int overrideTimeout = 0;
int timeout = 10;
int retries = 3;
if (overrideTimeout > 0) {
timeout = overrideTimeout;
}
int budget = timeout * retries;
printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
return 0;
}
#include <stdio.h>
int main(void) {
int overrideTimeout = 5;
int timeout = 10;
int retries = 3;
if (overrideTimeout > 0) {
timeout = overrideTimeout;
}
int budget = timeout * retries;
printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
return 0;
}
#include <stdio.h>
int main(void) {
int overrideTimeout = 20;
int timeout = 10;
int retries = 3;
if (overrideTimeout > 0) {
timeout = overrideTimeout;
}
int budget = timeout * retries;
printf("timeout=%d retries=%d budget=%d\n", timeout, retries, budget);
return 0;
}
overrideTimeout ← 0, timeout ← 10, retries ← 3, budget ← 30
3int main(void) {4 int overrideTimeout→ 0 = 0; //@overrideTimeout=5, 205 int timeout→ 10 = 10;6 int retries→ 3 = 3;78 if (overrideTimeout > 0) {9 timeout = overrideTimeout;10 }1112 int budget→ 30 = timeout10 * retries3;1314 printf("timeout=%d retries=%d budget=%d\n", timeout10, retries3, budget30);15 return 0;16}outputtimeout=10 retries=3 budget=30
overrideTimeout ← 5, timeout ← 10, retries ← 3
3int main(void) {4 int overrideTimeout→ 5 = 5;5 int timeout→ 10 = 10;6 int retries→ 3 = 3;timeout ← 5
8if (overrideTimeout5 > 0) {9 timeout→ 5 = overrideTimeout5;10}budget ← 15
12 int budget→ 15 = timeout5 * retries3;1314 printf("timeout=%d retries=%d budget=%d\n", timeout5, retries3, budget15);15 return 0;16}outputtimeout=5 retries=3 budget=15
overrideTimeout ← 20, timeout ← 10, retries ← 3
3int main(void) {4 int overrideTimeout→ 20 = 20;5 int timeout→ 10 = 10;6 int retries→ 3 = 3;timeout ← 20
8if (overrideTimeout20 > 0) {9 timeout→ 20 = overrideTimeout20;10}budget ← 60
12 int budget→ 60 = timeout20 * retries3;1314 printf("timeout=%d retries=%d budget=%d\n", timeout20, retries3, budget60);15 return 0;16}outputtimeout=20 retries=3 budget=60