1989年開業 情報工学部門 文部科学省登録番号 第22082号 公益社団法人日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム 文字数型(char型)のオーバーフロー

●文字型 signed char 型 と unsigned char 型の変数に 0 から 1 を加算していき、オーバーフローする様子を表示する
 プログラムです。
●符号付きでは、内部形式(16進表示)の最上位ビットを符号として認識します。
 符号ビットが 1 のとき2の補数(負数)の扱いになります。
●char 型は、一般的な処理系では 1 バイトと定義されています。
●printf関数の変換指定子 %d によって、int型の数値に変換されて表示されます。


≫ソースファイルのダウンロード: over02.c
【問題】
●printf関数の変換指定子を %08b(整数2進表示,前0付き8桁) にして表示してみよう。
 ※負数は32桁で表示されてしまうのはなぜか考察してみよう。
●変換指定子 %08b でも負数を正しく 8桁で表示できるよう訂正しよう 。
●8桁の2進表示(内部形式)では、符号ありも符号なしも同じであることを確認しよう。

/****************************/
/*  文字型のオーバーフロー  */
/****************************/
#include <stdio.h>
void  main( )
{
    signed char   c1='\0';
    unsigned char c2='\0';
    int  i;

    printf("*** signed char 型 ***\n");

    for( i=0; i<=256; i++ )
      {
        printf("%4d ",c1);
        c1++;
      }

    printf("\n\n*** unsigned char 型 ***\n");

    for( i=0; i<=256; i++ )
      {
        printf("%4d ",c2);
        c2++;
      }
}
   

©著作者からのお願い

●プログラムの著作者、著作権者は佐伯英子です。
●このページで公開するプログラムは、複製、改変、無償再配布できます。
●再配布に当たっては、必ず著作者名を明記し、ソースも公開してください。
●改変後に再配布される場合も、原著作者を明記していただき、ソースも公開してください。
●これらのプログラムを使って、有償サービスをしていただいてもかまいません。
●これらのプログラムは、改変されたものも含めて、無断で有償再配布しないでください。
●これらは、再再配布以降にも引き継がれます。

         【ご利用例】
●ブログやホームページ、印刷物に掲載していただいてもかまいません。(出典明記)
●学校の授業や実習、会社の研修、有料の講座などでお使いいただけます。(出典明記)
無断で販売しないでください。
----------------------------------------
●お問合せはどうぞこちらから
----------------------------------------
■著作権法全文(e-Govウェブサイト)■
法令全般



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