1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員
≫サンプルプログラム一覧 ≫
オープンソース/C言語サンプルプログラム 整数型(short型)のオーバーフロー
●整数型 signed short int 型 と unsigned short int 型の最大値に 1 を加算し、値を表示するプログラムです。 ●符号付きでは、内部形式(16進表示)の最上位ビットを符号として認識します。 符号ビットが 1 のとき2の補数(負数)の扱いになります。 ●short int 型は、一般的な処理系では 2 バイトと定義されています。 ●このプログラムでは型宣言子の "int" を省略しています。 ●printf関数の変換指定子 %hd 、%hX 、%hu 、 %hX 、に注意しよう。 %d や %X では int型(4バイト)に変換されるため、正しく表示できない場合があります。
≫ソースファイルのダウンロード: over01.c 【問題】 ●負数は2の補数になっていることを確認しよう 。 ●初期値を 0 にして、1 を引いたらどうなるか試してみよう 。
/****************************/ /* 整数型のオーバーフロー */ /****************************/ #include <stdio.h> void main( ) { signed short n1=32767,m1; unsigned short n2=65535,m2; m1=n1+1; printf("\nsigned short 型の最大値 %hd (%04hX) に 1 を足すと %hd (%04hX) になる\n",n1,n1,m1,m1); m2=n2+1; printf("\nunsigned short 型の最大値 %hu (%04hX) に 1 を足すと %hu (%04hX) になる\n",n2,n2,m2,m2); }
佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601 E-mail: info@saeki-pe.com