C言語編 第20章 数値の大きさと符号 解答ページ

先頭へ戻る

問題①

問題① short型、int型、long型の大きさを確認するプログラムを作成して下さい。


型の大きさは、sizeof演算子で調べられます。

#include <stdio.h>

int main(void)
{
    printf( "short:  %u\n", sizeof(short) );
    printf( "int:    %u\n", sizeof(int) );
    printf( "long:   %u\n", sizeof(long) );

    return 0;
}

実行結果:

short:  2
int:    4
long:   4

問題②

問題② 次のプログラムは、あまり適切とは言えません。理由を考えて下さい。

#include <stdio.h>

int main(void)
{
    double i;

    for( i = 0.0; i < 100.0; i += 1.5 ){
        printf( "%.1lf\n", i );
    }

    return 0;
}


このプログラムは予定通りに動くかも知れませんが、 浮動小数点数は、正確に値を表現できるとは限らないので、printf関数が出力する値が微妙に違ってしまうかも知れません。 そのため、for文の制御に浮動小数点数を使うべきではありません。

問題③

問題③ char型が符号付きか、符号無しかを判定するプログラムを作成して下さい。


#include <stdio.h>
#include <limits.h>

int main(void)
{
    if( CHAR_MIN < 0 ){
        puts( "char型は符号付き" );
    }
    else{
        puts( "char型は符号なし" );
    }

    return 0;
}

実行結果:

char型は符号付き

char型が符号付きであれば、最小値を示す CHAR_MIN の値が負数になっているはずで、 逆に、符号無しであれば、CHAR_MIN の値は正数(0) のはずです。 ですから、CHAR_MIN の値を調べれば判定可能です。



参考リンク

更新履歴

'2018/2/22 表記を統一(符号あり整数 -> 符号付き整数)

'2018/2/21 全面的に文章を見直し、修正を行った。

'2009/6/29 新規作成。





第20章のメインページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS