上に戻る
1 /************************************************************************/
2 /******* *********/
3 /******* 5章. 制御文の罠 *********/
4 /******* 初版 NEC通信システム *********/
5 /************************************************************************/
6 /*int/void無し*/controlFlow(void)
7 {
8 unsigned int j ;
9 char buf[10] ;
10 /************************/
11 /* 5.1. switch文の罠 */
12 /************************/
13 char i ;
14 switch(i) { /*
15 case 問題修正: */
16 printf("問題修正の残骸 ↑これ ¥n") ;
17 case 1:
18 printf("break忘れてます¥n") ;
19 defalut :
20 deault :
21 defualt :
22 printf("スペルミス¥n") ;
23 case 0x80: ; /* charは0x7fまでしか表現できません */
24 }
25 /************************/
26 /* 5.2. for文の罠 */
27 /************************/
28 for(i = 0 ; 5<i,i<10 ; i++ ) {
29 printf("5から10の間のつもりですが,") ;
30 printf("5<i は無視されます i = %d¥n",i) ;
31 }
32 for(j = 10 ; j >= 0 ; j--) {
33 printf("無限ループか、アボートします¥n") ;
34 buf[j] = 0 ; break ;
35 }
36 /************************/
37 /* 5.3. if文の罠 */
38 /************************/
39 if(i != 0); { printf("C-FAQ 16.1:セミコロンが余計です¥n");}
40 if(i) /*A*/
41 if(j) /*B*/
42 printf("コンパイラには、段落は分かりません¥n") ;
43 else
44 printf("elseは、A,Bどちらのif文に対応するでしょうか¥n") ;
45 /************************/
46 /* 5.4. break文の罠 */
47 /************************/
48 while(i++) {
49 switch(i) {
50 case 1:
51 /* ループを停止させるつもりでも止まらない */
52 break ;
53 case 2:
54 /* goto絶対禁止の人はK&R2 page 80 参照 */
55 goto loopend ; /* この方が安全 */
56 }
57 }
58 loopend:
59 return ; /*ゴミが返ります*/
60 }
上に戻る