上に戻る
1 /************************************************************************/
2 /******* *********/
3 /******* 4章. 演算子に注意 *********/
4 /******* 初版 NEC通信システム *********/
5 /************************************************************************/
6 struct tag {
7 int bit1:1 ;
8 int neverON ;
9 } s ;
上に戻る
10 void operators(int argc,char *argv[])
11 {
12 int i ;
13 int ret ;
14
15 /************************/
16 /* 4.1. C言語入門 */
17 /************************/
18 char buf[10] ;
19 buf[10] = 0 ; /* buf[9]までしか使用できません */
20 buf[i++] = i ; /* 標準規格外、K&R2 2.12参照 */
21 ret <<= 32 ; /* シフトしすぎです */
22 ret == 0 ;
23 if(ret = 0) {
24 printf("C-FAQ 17.4参照¥n") ;
25 }
26
27 /********************************************************/
28 /* 4.2. hundredがNGと等しか否かの結果がretに入ります。 */
29 /********************************************************/
30 #define NG (-1)
31 #define hundred() 100 /* 百 */
32 if(ret = hundred() != NG) {
33 printf("百を期待しても結果は壱です %d¥n",ret) ;
34 }
35 ret = 2 ;
36 if(ret & 2 == 2) {
37 ;
38 } else {
39 printf("『ret & (2 == 2)』¥n") ;
40 printf("『ret & (1)』¥n") ;
41 printf("『ret & 1』¥n") ;
42 }
43 /************************/
44 /* 4.3. 0bitは立ちません */
45 /************************/
46 #define bit0 0 /* 構造体の絵が0~31bitなので */
47 s.neverON = bit0 ; /* 0bitを立てる人多し */
48 s.neverON |= bit0 ; /* マクロ定義のため、検出困難 */
49 printf("0bitはは立ちません s.neverON=%d¥n",s.neverON) ;
50
51 /************************************************/
52 /* 4.4. ANSI-Cでは0か-1にしかなりません */
53 /************************************************/
54 s.bit1 = 1 ;
55 printf("1を代入してもマイナス壱Ⅰ s.bit1=%d¥n",s.bit1) ;
56 }
上に戻る