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); }
©著作者からのお願い
●プログラムの著作者、著作権者は佐伯英子です。 ●このページで公開するプログラムは、複製、改変、無償再配布できます。 ●再配布に当たっては、必ず著作者名を明記し、ソースも公開してください。 ●改変後に再配布される場合も、原著作者を明記していただき、ソースも公開してください。 ●これらのプログラムを使って、有償サービスをしていただいてもかまいません。 ●これらのプログラムは、改変されたものも含めて、無断で有償再配布しないでください。 ●これらは、再再配布以降にも引き継がれます。
【ご利用例】 ●ブログやホームページ、印刷物に掲載していただいてもかまいません。(出典明記) ●学校の授業や実習、会社の研修、有料の講座などでお使いいただけます。(出典明記) ●無断で販売しないでください。 ---------------------------------------- ●お問合せはどうぞこちらから ---------------------------------------- ■著作権法全文(e-Govウェブサイト)■
佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601 E-mail: yfb22332@nifty.com