C言語のきほん「printf関数~基数の指定~」

スポンサーリンク
Cプログラミング C言語

本ブログでは、以前、10進数2進数、8進数、16進数変換するプログラムをご紹介した。

今回は、printf関数を使って8進数と16進数を表示するプログラムをご紹介しよう。

なお、本プログラムは、Windows 11 Home(23H2)上で、Visual Studio Code(1.87.2)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 でコンパイルしている。

C言語のインストールについてはこちらをご参照ください。↓

10進数で読み込んだ正の整数値を8進数と16進数で表示するプログラム

//10進数で読み込んだ正の整数値を8進数と16進数で表示するプログラム
#include <stdio.h>

int main(void)
{
    unsigned n;

    printf("正の整数値:");
    scanf("%u",&n);

    printf("8進数は0%oです\n",n);
    printf("16進数は0x%xです\n",n);

    return 0;
}
正の整数値:357
8進数は0545です
16進数は0x165です

念のため、先にご紹介した基数変換のプログラムでも試してみた。

10進数を基数変換します
変換する非負の整数:357
何進数に変換しますか(2-36) :8
8進数では545です
もう一度しますか(1-yes,0-no) :1
変換する非負の整数:357
何進数に変換しますか(2-36) :16
16進数では165です
もう一度しますか(1-yes,0-no) :0

整数を表示する際の基数の指定

printf関数では、10進数だけでなく、8進数と16進数での出力ができる。

8進数の出力には、%oを使い、16進数の出力には、%xまたは%Xを使う。

%xでは、小文字a~fで、%Xでは、大文字A~Fで表示される。

整数定数

整数定数では3種類の基数で表せる。

10進定数
10進数で表された整数定数が10進定数である。

8進定数
10進定数と区別できるように先頭に0をおいて表記する。
例えば、012は8進定数である。(10進数での10である。)

16進定数
先頭に0xまたは0Xをつけて表記する。10進数の10~15に相当するA~Fは大文字でも小文字でもよい。

参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ

コメント

タイトルとURLをコピーしました