Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

switch.c (2745B)


      1 main()
      2 {
      3 	int i; char *s;
      4 
      5 	for (s = "bfnrtvx"; *s; s++)
      6 		printf("%c = 0x%x\n", *s, backslash(*s));
      7 	f();
      8 	g();
      9 	h();
     10 	for (i = 0x1000000; i&0x7000000; i += 0x1000000)
     11 		big(i);
     12 	limit();
     13 	return 0;
     14 }	
     15 
     16 backslash(c)
     17 {
     18 	switch (c) {
     19 	case 'b':
     20 		return '\b';
     21 	case 'f':
     22 		return '\f';
     23 	case 'n':
     24 		return '\n';
     25 	case 'r':
     26 		return '\r';
     27 	case 't':
     28 		return '\t';
     29 	case 'v':
     30 		return '\v';
     31 	}
     32 	return c;
     33 }
     34 
     35 f() {
     36 	int i, x = 0, y;
     37 
     38 	printf("f:\n");
     39 	for (i = 0; i <= 20; i++) {
     40 		y = i;
     41 		switch (i) {
     42 		case 1: x = i; break;
     43 		case 2: x = i; break;
     44 		case 7: x = i; break;
     45 		case 8: x = i; break;
     46 		case 9: x = i; break;
     47 		case 16: x = i; break;
     48 		case 17: x = i; break;
     49 		case 18: x = i; break;
     50 		case 19: x = i; break;
     51 		case 20: x = i; break;
     52 		}
     53 		printf("x = %d\n", x);
     54 	}
     55 }
     56 
     57 g() {
     58 	int i;
     59 
     60 	printf("g:\n");
     61 	for (i = 1; i <= 10; i++)
     62 		switch (i) {
     63 		case 1: case 2: printf("1 %d\n", i); break;
     64 		case 3: case 4: case 5: printf("2 %d\n", i); break;
     65 		case 6: case 7: case 8: printf("3 %d\n", i);
     66 		default:
     67 			printf("d %d\n", i); break;
     68 		case 1001: case 1002: case 1003: case 1004:
     69 			printf("5 %d\n", i); break;
     70 		case 3001: case 3002: case 3003: case 3004:
     71 			printf("6 %d\n", i); break;
     72 	}
     73 }
     74 
     75 h()
     76 {
     77 	int i, n=0;
     78 
     79 	printf("h:\n");
     80 	for (i = 1; i <= 500; i++)
     81 		switch (i) {
     82 		default: n++; continue;
     83 		case 128: printf("i = %d\n", i); break;
     84 		case 16: printf("i = %d\n", i); break;
     85 		case 8: printf("i = %d\n", i); break;
     86 		case 120: printf("i = %d\n", i); break;
     87 		case 280: printf("i = %d\n", i); break;
     88 		case 264: printf("i = %d\n", i); break;
     89 		case 248: printf("i = %d\n", i); break;
     90 		case 272: printf("i = %d\n", i); break;
     91 		case 304: printf("i = %d\n", i); break;
     92 		case 296: printf("i = %d\n", i); break;
     93 		case 288: printf("i = %d\n", i); break;
     94 		case 312: printf("i = %d\n", i); break;
     95 		}
     96 	printf("%d defaults\n", n);
     97 }
     98 
     99 big(x) unsigned x; {
    100 	switch(x&0x6000000){
    101 	case -1:
    102 	case -2:
    103 	case 0x0000000:
    104 		printf("x = 0x%x\n", x); break;
    105 	case 0x2000000:
    106 		printf("x = 0x%x\n", x); break;
    107 	case 0x4000000:
    108 		printf("x = 0x%x\n", x); break;
    109 	default:
    110 		printf("x = 0x%x (default)\n", x); break;
    111 	}
    112 }
    113 
    114 #include <limits.h>
    115 
    116 limit() {
    117 	int i;
    118 
    119 	for (i = INT_MIN; i <= INT_MIN+5; i++)
    120 		switch (i) {
    121 		case INT_MIN:	printf("0\n"); break;
    122 		case INT_MIN+1:	printf("1\n"); break;
    123 		case INT_MIN+2:	printf("2\n"); break;
    124 		case INT_MIN+3:	printf("3\n"); break;
    125 		case INT_MIN+4:	printf("4\n"); break;
    126 		default:	printf("5\n"); break;
    127 		}
    128 	for (i = INT_MAX; i >= INT_MAX-5; i--)
    129 		switch (i) {
    130 		case INT_MAX:	printf("0\n"); break;
    131 		case INT_MAX-1:	printf("1\n"); break;
    132 		case INT_MAX-2:	printf("2\n"); break;
    133 		case INT_MAX-3:	printf("3\n"); break;
    134 		case INT_MAX-4:	printf("4\n"); break;
    135 		default:	printf("5\n"); break;
    136 		}
    137 }