| main() |
| { |
| int i; char *s; |
| |
| for (s = "bfnrtvx"; *s; s++) |
| printf("%c = 0x%x\n", *s, backslash(*s)); |
| f(); |
| g(); |
| h(); |
| for (i = 0x1000000; i&0x7000000; i += 0x1000000) |
| big(i); |
| limit(); |
| return 0; |
| } |
| |
| backslash(c) |
| { |
| switch (c) { |
| case 'b': |
| return '\b'; |
| case 'f': |
| return '\f'; |
| case 'n': |
| return '\n'; |
| case 'r': |
| return '\r'; |
| case 't': |
| return '\t'; |
| case 'v': |
| return '\v'; |
| } |
| return c; |
| } |
| |
| f() { |
| int i, x = 0, y; |
| |
| printf("f:\n"); |
| for (i = 0; i <= 20; i++) { |
| y = i; |
| switch (i) { |
| case 1: x = i; break; |
| case 2: x = i; break; |
| case 7: x = i; break; |
| case 8: x = i; break; |
| case 9: x = i; break; |
| case 16: x = i; break; |
| case 17: x = i; break; |
| case 18: x = i; break; |
| case 19: x = i; break; |
| case 20: x = i; break; |
| } |
| printf("x = %d\n", x); |
| } |
| } |
| |
| g() { |
| int i; |
| |
| printf("g:\n"); |
| for (i = 1; i <= 10; i++) |
| switch (i) { |
| case 1: case 2: printf("1 %d\n", i); break; |
| case 3: case 4: case 5: printf("2 %d\n", i); break; |
| case 6: case 7: case 8: printf("3 %d\n", i); |
| default: |
| printf("d %d\n", i); break; |
| case 1001: case 1002: case 1003: case 1004: |
| printf("5 %d\n", i); break; |
| case 3001: case 3002: case 3003: case 3004: |
| printf("6 %d\n", i); break; |
| } |
| } |
| |
| h() |
| { |
| int i, n=0; |
| |
| printf("h:\n"); |
| for (i = 1; i <= 500; i++) |
| switch (i) { |
| default: n++; continue; |
| case 128: printf("i = %d\n", i); break; |
| case 16: printf("i = %d\n", i); break; |
| case 8: printf("i = %d\n", i); break; |
| case 120: printf("i = %d\n", i); break; |
| case 280: printf("i = %d\n", i); break; |
| case 264: printf("i = %d\n", i); break; |
| case 248: printf("i = %d\n", i); break; |
| case 272: printf("i = %d\n", i); break; |
| case 304: printf("i = %d\n", i); break; |
| case 296: printf("i = %d\n", i); break; |
| case 288: printf("i = %d\n", i); break; |
| case 312: printf("i = %d\n", i); break; |
| } |
| printf("%d defaults\n", n); |
| } |
| |
| big(x) unsigned x; { |
| switch(x&0x6000000){ |
| case -1: |
| case -2: |
| case 0x0000000: |
| printf("x = 0x%x\n", x); break; |
| case 0x2000000: |
| printf("x = 0x%x\n", x); break; |
| case 0x4000000: |
| printf("x = 0x%x\n", x); break; |
| default: |
| printf("x = 0x%x (default)\n", x); break; |
| } |
| } |
| |
| #include <limits.h> |
| |
| limit() { |
| int i; |
| |
| for (i = INT_MIN; i <= INT_MIN+5; i++) |
| switch (i) { |
| case INT_MIN: printf("0\n"); break; |
| case INT_MIN+1: printf("1\n"); break; |
| case INT_MIN+2: printf("2\n"); break; |
| case INT_MIN+3: printf("3\n"); break; |
| case INT_MIN+4: printf("4\n"); break; |
| default: printf("5\n"); break; |
| } |
| for (i = INT_MAX; i >= INT_MAX-5; i--) |
| switch (i) { |
| case INT_MAX: printf("0\n"); break; |
| case INT_MAX-1: printf("1\n"); break; |
| case INT_MAX-2: printf("2\n"); break; |
| case INT_MAX-3: printf("3\n"); break; |
| case INT_MAX-4: printf("4\n"); break; |
| default: printf("5\n"); break; |
| } |
| } |