2013年11月12日火曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅡ部(単純なプログラミング)の11章(ビット演算)、11.1(ビット演算子)、11.3(ビット単位 OR (|))、11.4(ビット単に排他的 OR (^))、11.5(補数演算子 NOT (~))、11.6(左シフト演算子と右シフト演算子(<<, >>))、11.7(ビットのセットとクリアおよびテスト)、設問11-1を解いてみる。

その他参考書籍

設問11-1.

DIRECT_CONNECTはビット番号8を使用してけど、char型は8ビット(76543210)でビット番号は7までだから、フラグは正しく動作しない。

フラグに1バイト(8ビット)のchar型ではなく、2バイト(16ビット)のshort int型を使えばいい。

修正。

コード

sample.c

#include <stdio.h>

const int HIGH_SPEED = (1<<7);

const int DIRECT_CONNECT = (1<<8);

short int flags = 0;

int main()
{
    flags |= HIGH_SPEED;
    flags |= DIRECT_CONNECT;
    
    if ((flags & HIGH_SPEED) != 0){
        printf("High speed set\n");
    }
    
    if ((flags & DIRECT_CONNECT) != 0){
        printf("Direct connect set\n");
    }
    return (0);
}

makefile

CC=cc
CFLAGS=-g

sample: sample.c
 $(CC) $(CFLAGS) -o sample sample.c

clean:
 rm -f sample

入出力結果(Terminal)

$ make
cc -g -o sample sample.c
$ ./sample
High speed set
Direct connect set
$

0 コメント:

コメントを投稿