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);
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: info@saeki-pe.com