1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h>
#include <stdlib.h>
// #define triple(n) n * 3 // NOT RIGHT (yet)
#define triple(n) (n) * 3 // BETTER but righy, yet
#define add_5(n) (n) + 5 // NOT RIGHT (yet)
int main(int argc, char* argv[]) {
int a = 5;
int b = triple(5); // becomes a * 3
printf("triple(%d) == %d\n", a, b);
int c = triple(5 + 2); // become (5 + 2) * 3
// └──┬──┘
// parameter
// should be: 21
// actually: 21
printf("triple(%d + 2) == %d\n", a, c);
int d = add_5(5);
printf("add_5(%d) == %d\n", a, d);
int e = add_5(5) * 100; // becomes 5 + 5 * 100
// └─┬─┘
// result of add_5(5)
// Expect: e == 1000
// Actual: e == 505 ... WRONG!!!!
printf("add_5(%d) == %d\n", a, e);
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2021 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.