/****************************/
/* 論理演算 */
/* 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;
}
| 菅沼ホーム | 演習解答例目次 | 本文目次 | 付録 | 索引 |