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