/****************************/ /* 論理演算 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { int a, x1, x2; char c; /* x=(a==10) の評価 */ a = 10; x1 = (a == 10); a = 5; x2 = (a == 10); printf("aが10の時,xは %d\n", x1); printf("aが5の時,xは %d\n", x2); /* (c >= 'a') && (c <= 'z') の評価 */ c = 'h'; x1 = (c >= 'a') && (c <= 'z'); c = 'H'; x2 = (c >= 'a') && (c <= 'z'); printf("cが'h'の時,論理式は %d\n", x1); printf("cが'H'の時,論理式は %d\n", x2); return 0; }
/**************************************/ /* ポインタを使用した2つのデータの和 */ /* coded by Y.Suganuma */ /**************************************/ #include <stdio.h> int main() { double a = 10.0, b = 20.0; double *ap, *bp; char ac = 'a', bc = 'b'; char *apc, *bpc; /* double */ /* アドレスの設定 */ ap = &a; bp = &b; /* アドレスと計算結果の出力 */ printf("和は=%f アドレス(a=%08x b=%08x)\n", *ap+*bp, ap, bp); a++; bp++; printf(" アドレス(a=%08x b=%08x)\n", ap, bp); printf("bpの指す場所(a)に記憶されている値は=%f\n", *bp); /* char */ /* アドレスの設定 */ apc = ∾ bpc = &bc; /* アドレスと計算結果の出力 */ printf("和は=%d アドレス(ac=%08x bc=%08x)\n", *apc+*bpc, apc, bpc); ac++; bpc++; printf(" アドレス(ac=%08x bc=%08x)\n", apc, bpc); printf("bpcの指す場所(ac)に記憶されている値は=%c\n", *bpc); return 0; }
/****************************/ /* ポインタ */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main(void) { int b = 10, a = 20; int *point, *pointp; point = &a; /* aのアドレス */ /* *(point++) */ printf("point %08x その指す値 %d\n", point, *point); pointp = point; pointp++; printf("point++ %08x その指す値 %d\n", pointp, *pointp); /* **point 次の文はエラーになる.**pointは,(*point)が指すアドレスに入っている 値を示すが,(*point)はアドレスではない. printf("point %08x *point %d **point %08x\n", point, *point, **point); */ return 0; }
/****************************/ /* 上位及び下位4ビットの和 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { int n, low, up; unsigned int un; /* 整数データの入力 */ printf("整数を入力して下さい "); scanf("%d", &n); printf(" 入力された整数は %08x\n", n); /* 上位及び下位4ビットの和 */ low = n & 0x0000000f; un = (unsigned int)n; up = (int)(un >> (8 * sizeof(int) - 4)); printf("low %d up %d 和 %d\n", low, up, low+up); return 0; }
/****************************/ /* ビットの反転 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { int n, m; /* 整数データの入力 */ printf("整数を入力して下さい "); scanf("%d", &n); printf(" 入力された整数は %08x\n", n); /* ビットの反転と最上位ビットに1をセット */ m = n ^ 0xffffffff; m = m | 0x80000000; printf("結果 %08x\n", m); return 0; }
/****************************/ /* 整数データを9倍 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> int main() { int n, m; /* 整数データの入力 */ printf("整数を入力して下さい "); scanf("%d", &n); /* 9倍 */ m = n << 3;; m += n; printf("結果 %d\n", m); return 0; }
菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |