- #include <stdio.h>
- int isMinValue (int x) {
- return (x-1) > x;
- }
- int main () {
- int i = -2000000000;
- while (!isMinValue(i))
- i--;
- printf ("Min value is %d\n", i);
- }
- $ gcc -O1 undefined.c && ./a.out
- Min value is -2147483648
- $ gcc -O2 undefined.c && ./a.out
- ^C #infinite loop
-
- #include <stdio.h>
- int count = 0;
- int f() { return ++count; }
- int g() { return ++count >= 2 ? 5 : 3; }
- int h(int a, int b) { return a+b; }
- int main() {
- int x = h(f(), g());
- printf ("%d\n", x);
-
- int y = 3;
- y = (y += 1) + (y = y*y);
- printf ("%d\n", y);
- }
- $ clang -Wall undefined.c
- undefined.c:13:21: warning: unsequenced modification and access to 'y' [-Wunsequenced]
- y = (y += 1) + (y = y*y);
- ~~ ^
- 1 warning generated.
- $ ./a.out
- 6
- 20
a=f(), b=g(), a+by=y+1; y=y+y*y- #include <stdio.h>
- int count = 0;
- int f() { return ++count; }
- int g() { return ++count >= 2 ? 5 : 3; }
- int h(int a, int b) { return a+b; }
- int main() {
- int x = h(f(), g());
- printf ("%d\n", x);
-
- int y = 3;
- y = (y += 1) + (y = y*y);
- printf ("%d\n", y);
- }
- $ gcc -Wall -O3 undefined.c
- undefined.c:13:21: warning: unsequenced modification and access to 'y' [-Wunsequenced]
- y = (y += 1) + (y = y*y);
- ^
- $ ./a.out
- 5
- 32
b=g(), a=f(), a+by=y+1; y=y*y; y=y+y;