int glob; int add(int x, int y) { return (x + y); } int f() { return (glob); } int g() { return (++glob); } int h() { if (f() > 3) { return (f() + g()); /* bad --- order of evaluation matters! */ } else { if (g() < 2) { return (f() + (++glob)); /* bad! */ } else { return (g() + h()); /* bad (twice) */ } } /* unreachable code here */ return (add ((printf("hullo"), 3), (printf("goodbye"), 4))); /* bad (wrice) */ }