1 /* 2 * max-makro.c 3 * 4 * Maximum zweier Zahlen als Makro statt Funktion 5 * 6 * Autor: H.Drachenfels 7 * Erstellt am: 27.10.2023 8 */
9
10 #include <stdio.h>
11
12 //#define max(a, b) a > b ? a : b // falsch, Ausdruck klammern!
13 //#define max(a, b) (a > b ? a : b) // falsch, Parameterverwendung klammern!
14 #define max(a, b) ((a) > (b) ? (a) : (b)) // richtig, aber Mehrfachbewertung von a und b
15
16 int main(void)
17 {
18 int value = 2 * max(7, 8 | 9); // bei Makros Ausdruecke als Argument vermeiden!
19 printf("2 * max(%d, %d) = %d\n", 7, 8 | 9, value);
20 }
21