diff options
| author | Mike Vink <mike@pionative.com> | 2024-05-28 08:49:46 +0200 |
|---|---|---|
| committer | Mike Vink <mike@pionative.com> | 2024-05-28 08:49:46 +0200 |
| commit | b424517a33bf61aedff29eed74a665402ab496ba (patch) | |
| tree | 1897e147cf15f5c7a121a73fc003b32639a697ea /3/6_control/27_while_for.c | |
| parent | 758543aef80c3b3568a20b0dff20202c796a4819 (diff) | |
procedures
Diffstat (limited to '3/6_control/27_while_for.c')
| -rw-r--r-- | 3/6_control/27_while_for.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/3/6_control/27_while_for.c b/3/6_control/27_while_for.c new file mode 100644 index 0000000..f7f73f7 --- /dev/null +++ b/3/6_control/27_while_for.c @@ -0,0 +1,46 @@ +#include <stdio.h> + +long fact_for(long n) { + long i; + long result = 1; + for (i = 2; i <= n; i++) { + result *= i; + } + return result; +} + +// guarded do +// +// init-s +// t = test-e; +// if (!t) goto done; +// +// loop: +// body-s +// update-e; +// t = test-e; +// if (t) goto loop; +// +// done: + +long fact_for_gd_goto(long n) { + long i = 2; + long result = 1; + + int t = i<=n; + if (!t) { + goto done; + } +loop: + result *= i; + i++; + t = i<=n; + if (t) goto loop; +done: + return result; +} + +int main() { + printf("for: %ld, goto: %ld\n", fact_for(5), fact_for_gd_goto(5)); + return 0; +} |
