switch.c 2.7 KB

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