A small program can start from defaults and apply an explicit override before computing derived settings.

Config Defaults

config_defaults.c
#include <stdio.h>

int main(void) {
    int overrideTimeout = ;
    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 = ;
    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 = ;
    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;
}
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.