\section{今回の構文}

\subsection{\texttt{printf}関数}

\texttt{printf}とはPrint Formatのことで、第一引数に書式(文字列)、第二以降の引数に表示したいデータ(変数、定数、リテラル)を羅列する。
この関数は\texttt{stdio.h}を\lstinline[columns=fixed]{#include}(ソースコードに含める)ことで利用できる。\cite{cppref_printf}

\defaultlistingstyle
\begin{lstlisting}[language=C,title={\texttt{printf}関数}]
printf("<書式>", <データ1>, <データ2>, ...);
\end{lstlisting}

書式には以下のような物がある：

\begin{lstlisting}[language=C,title={\texttt{printf}の書式(一部)\cite{xiny}}]
"%d" // 整数
"%f" // 浮動小数点
"%c" // 文字(単一)
"%s" // 文字列
\end{lstlisting}

更に、書式には文字の表示を制御できる特殊文字(escape sequence)があり、一部の文字はソースコードと干渉するためそれらを使用しないと表示できない。特殊文字はバックスラッシュで始まり、ASCII文字1つが続く。

\begin{lstlisting}[language=C,title={特殊文字(一部)\cite{xiny}}]
"\n" // 改行
"\\" // バックスラッシュ
"\?" // 疑問符
"\"" // ダブルクウォーテーションマーク
"\'" // シングルクウォーテーションマーク
\end{lstlisting}

\newpage

\subsection{変数宣言・定義}\label{var_decl_def}

変数はコンピュータのメモリ上にある値が入る箱のような物である。この箱には整数や小数値、文字などが入るが、メモリ上ではすべて1と0で表現されている。
この一次元な1と0の海の中でどうやってプログラムが値の種類を決定しているのかというと、それはコンパイラが機械語に変換する際に変数名に添えられた型から読み出す時の必要な1と0の列の長さを実行ファイルに書き込んでいるのだ。

C言語で変数を扱うには二つの操作が必要である。
1つは変数の宣言、もう1つは変数の定義である。
変数の宣言とは文字通り変数の存在を宣言することである。
具体的にはその変数を格納する場所をメモリ上に作ることである。
そして変数の定義は値の代入と言い替えることができ、宣言で作られた場所に値を書き込む操作である。

ソースコードでは次のようになる:

\begin{lstlisting}[language=C,title={変数の例}]
int a;  // 整数型の変数の宣言
a = 17; // 変数名 a に 17 という値を書き込む
\end{lstlisting}

上記の書き方はC99などの標準規格が制定される前のソースコードによく見られるが、C99以降からは1行で宣言と代入が出来るようになっている。\cite{cppref_decl}

\begin{lstlisting}[language=C,title={C99以降の変数宣言・代入}]
int a = 17; // 整数型の変数 a の宣言と同時に 17 という値を書き込む
\end{lstlisting}
