C言語の書式指定子%dと%iの違いを徹底解説
C言語のprintf関数などで使われる書式指定子には「%d」と「%i」があります。この2つはよく似ていますが、それぞれ役割や挙動に特徴があります。本記事では、サンプルコードと実行結果をもとに、両者の違いをわかりやすく解説します。
書式指定子 %d とは
%d は、整数値を符号付き10進整数として出力するための書式指定子です。値が正でも負でも、必ず10進形式で表示されます。
%d の使用例
以下は、C言語で書式指定子 %d を使用したサンプルプログラムです。
#include <stdio.h>
int main() {
int v1 = 7456;
int v2 = -17346;
printf("10進数形式の値 : %d\n", v1);
printf("負の値 : %d", v2);
return 0;
}
実行結果
10進数形式の値 : 7456 負の値 : -17346
このように、%d を使うと正の整数はそのまま、負の整数はマイナス記号付きで、いずれも10進数として出力されます。
書式指定子 %i とは
%i は、整数値を10進数・8進数・16進数のいずれかの形式で扱える書式指定子です。8進数は先頭に「0」を付け、16進数は先頭に「0x」を付けて表現します。
%i の使用例
次に、C言語で書式指定子 %i を使用したサンプルプログラムを見てみましょう。
#include <stdio.h>
int main() {
int v1 = 1327;
int v2 = 0x42451;
printf("10進数形式の値 : %d\n", v1);
printf("16進数形式の値 : %i", v2);
return 0;
}
実行結果
10進数形式の値 : 1327 16進数形式の値 : 271441
この例では、16進数リテラル 0x42451 を %i で出力すると、10進数に変換された値「271441」が表示されます。
%d と %i の違いまとめ
printf関数では、%d と %i はまったく同じ動作をします。どちらを使っても出力結果に差はありません。
一方、scanf関数で入力を読み込む場合には違いが現れます。%d は入力を常に10進数として解釈しますが、%i は入力の先頭を判別し、「0x」で始まる場合は16進数、「0」で始まる場合は8進数として自動的に解釈します。用途に応じて適切な書式指定子を選択することが重要です。
-
MEAN.jsとMEAN.ioの違いは?本質的な共通点と選び方をわかりやすく解説
MEANスタックとは?「MEAN」とは、Webアプリケーション開発で使われる次の4つの技術の頭文字を取った略称です。MongoDB:ドキュメント指向のNoSQLデータベースExpress:Node.js向けの軽量WebアプリケーションフレームワークAngular:Googleが中心となって開発するフロントエンドフレームワークNode.js:サーバーサイドでJavaScriptを実行できるランタイム環境これらを組み合わせることで、フロントエンドからバックエンド、データベースまでをすべてJavaScriptで統一して開発できるのが、MEANスタック最大の魅力です。MEAN.jsとMEAN.ioは本
-
CellpaddingとCellspacingの違いとは?HTMLテーブルの余白設定をわかりやすく解説
HTMLで表(テーブル)を作成する際、セル内やセル同士の余白を調整したい場面は多くあります。そのときに登場するのが「cellpadding」と「cellspacing」という2つの属性です。名前は似ていますが、役割はまったく異なります。本記事では、それぞれの特徴と具体的な使い方、そして両者の違いについて詳しく解説します。Cellpadding(セルパディング)とは単一のセルに対して作用する属性です。セルの枠線(ボーダー)とセル内のコンテンツ(文字や画像など)との間の余白を調整します。デフォルト値は1(ピクセル)です。コンテンツが枠に密着して見づらくなるのを防げるため、視認性向上に効果的な手法と