Challenge 1: SQUARE(x) Without Parentheses, Applied to SQUARE(2 + 3) — Possible Solution ==================================================================== #include #define SQUARE(x) x * x int main() { printf("%d\n", SQUARE(2 + 3)); return 0; } What SQUARE(2 + 3) actually expands to, via pure text substitution (replacing x with the literal text "2 + 3" everywhere it appears): 2 + 3 * 2 + 3 Due to normal C operator precedence (multiplication before addition), this evaluates as: 2 + (3 * 2) + 3 = 2 + 6 + 3 = 11 Output: 11 The mathematically correct answer for (2 + 3) squared is 25 (5 * 5). 11 is very obviously wrong -- a direct consequence of the macro being pure textual substitution with no parentheses protecting either the parameter or the overall expression, exactly the trap the chapter's own SQUARE(a + b) example describes. WHY THIS WORKS AS AN ANSWER ------------------------------ This shows the literal text substitution result (2 + 3 * 2 + 3, not a computed value), correctly applies normal operator precedence to get 11, and explicitly contrasts it against the mathematically intended answer (25) to make the magnitude of the bug concrete rather than just asserting "it's wrong."