diff --git a/c-programming/experiments/static-const-variable.c b/c-programming/experiments/static-const-variable.c new file mode 100644 index 0000000..6d408ce --- /dev/null +++ b/c-programming/experiments/static-const-variable.c @@ -0,0 +1,38 @@ +/* + * static-vs-const-variable.c + * + * Author: Intel A80486DX2-66 + * License: Creative Commons Zero 1.0 Universal or Unlicense + * SPDX-License-Identifier: CC0-1.0 OR Unlicense + */ + +#include +#include +#include +#include +#include + +#ifndef M_PI +# define M_PI 3.1415926535897932384626433832795028841971693993751058209749445922 +#endif + +uint16_t frequently_called(uint8_t i); + +uint16_t frequently_called(uint8_t i) { + static uint16_t variable_1 = 2; + const uint16_t variable_2 = + (uint16_t) ( + (pow(10, floor(log10(M_PI))) + pow(10, ceil(log10(M_PI)))) / 2 + ); + static const uint16_t variable_3 = 3; + + return variable_1 * variable_2 * variable_3 * i; +} + +int main(void) { + for (uint8_t i = 1; i <= 16; i++) { + printf("f(%02" PRIu8 ") = %" PRIu16 "\n", i, frequently_called(i)); + } + + return EXIT_SUCCESS; +}