カテゴリー
C言語

puts関数をもっと知ろう

この章ではputs関数について説明します。
puts関数は文字列を出力する関数ですが、printf関数とは少し機能が違います。
printf関数との違いはputs関数は%d などの変換指定子を使用することができないことです。
もう一つの違いはputs関数は文字列の末尾に改行文字が自動的に付けられます。
逆に言いますとprintf関数は改行をしないで出力されます。
では例をみてみましょう。11 次の例をみてみましょう。11 これがputs関数とprintf関数の違いです。

カテゴリー
C言語

scanf関数について知ろう

この章ではscanf関数について説明します。
scanf関数はユーザーがキーボードから入力したデータを取得するための関数です。
例えば「あなたの年齢は?」と質問するとプログラムはユーザーが年齢を入力するまで待ちます。
そして、この入力された年齢をプログラムに取り込むことが出来ます。
では例をみてみましょう。1 では説明を始めます。1 =>ユーザーが入力したデータを入れるための変数の宣言をします。
年齢を入力するので、型はintにします。1 =>「年齢は?」を出力します。1 =>scanf 関数はユーザーが年齢を入力してくれるのを待ちますので、一回プログラムが止まります。
そして、例えばユーザーが23と入力したのならば、その23がaに入ります。
scanfもprintfと同じように変換指定子を指定しますが、例の場合は整数を入力するので1を指定しています。
注意してほしいことはscanfの中の変数の前に&を付けることを忘れないでください。
最後に以下の箇所で出力します。11 では例をみてみましょう。1 結果は以下の通りです。1

カテゴリー
C言語

複合演算子を知ろう

この章では複合演算子について説明します。
算術演算子と代入演算子を複合して使用しているので、複合演算子と呼ばれています。
例えば「a += b」は「a=a+b;」と同じなので、a と b を足したものを a へ代入しています。11 では例をみてみましょう。11111111

カテゴリー
C言語

加算子,減算子について知ろう

この章では加算子,減算子について説明します。
加算子は数値を1つ増やし、減算子は数値を1つ減らす演算子です。
加算子は1減算子は1で表示します。
まだ説明していませんが、for文などの繰り返し構文等に主に使われます。1 では例をみてみましょう。1 a1++;も++a2;も変数の値である2に1を足しているので、結果は同じ3になります。
つまり、単独で1を使用する場合には結果は同じになります(++が前にあっても、後ろにあっても結果は同じです)。

次は前置加算子について詳しく説明します。11 「++a」は「a=a+1」と同じです。
つまり「a+1」を計算してから、左辺のaに結果を代入して、printfで出力していますので、11は4になります。
aはこの時点で4に変化しているので1のaも4になります。
前置加算子の例は特に変わったところが無いので解りやすいですが、次の後置加算子の例は少し複雑になります。

後置加算子の例をみてみましょう。11 後置加算子では初めに1を無視した状態で出力し、それからaに1を加算します。1 つまり、この例ではaの値である3を出力してから、aに1を足しています。

カテゴリー
C言語

キャスト演算子について知ろう

この章ではキャスト演算子について説明します。
型が違う変数同士の計算の場合にはサイズが大きい型に自動的に型変換されていましたが、自身で型変換をする方法もあります。
それはキャスト演算子を使う方法です。
では初めにキャスト演算子を使わない例をみてみましょう。1 結果は「3.000000」になります。
算数の計算では答えは3.25になりますが、int同士の計算なので、小数点以下が削除されてから、double型の変数eに代入されます。
これでは正確な計算は出来ませんね。
そこで変数の前に1を付けることで、その指定した型に換えることが出来ます。1 結果は「3.250000」となり、正確に計算できます。
この例の場合は以下のように両方ともキャストしていますが実は両方ともキャストする必要はありません。1 doubleのほうがintより大きい型なのでfとvの片方だけdoubleにキャストすることで、もう片方の変数もdoubleに変換されます。
つまり1のように片方でも同じ結果になります。

カテゴリー
C言語

C言語で計算をしよう

この章では算術演算子について説明します。
11 算術演算子とは計算するための記号です。1 number1+number2は加算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を足しています。
特に数値を変数に入れる必要性がないのであれば1と計算していただいても結構です。

number1-number2は減算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を引いています。
特に数値を変数に入れる必要性がないのであれば1と計算していただいても結構です。

1は乗算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を掛けています。
特に数値を変数に入れる必要性がないのであれば1と計算していただいても結構です。

number1/number2は除算を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士を割っています。
特に数値を変数に入れる必要性がないのであれば1と計算していただいても結構です。

number1%number2は剰余を行っているのですが、number1には5、number2には3が入っているので、この変数の値同士の割り算の余りを算出します。
特に数値を変数に入れる必要性がないのであれば1と計算していただいても結構です。

1は掛け算と足し算を行っているのですが、計算の優先順位は掛け算が先です。
掛け算を行ってから足し算を行います。
これは算数の計算順序と同じです。
足し算から計算したい場合は1と、カッコを足し算に付け加えてください。
カッコを付けることで優先順位が掛け算より高くなります。1
以下の例は先ほどの例を書き換えた例です。
一度計算結果を変数に入れてから、printfで出力しています。
111
次の例は型が違うデータ同士の計算の例です。1 結果は以下の通りです。 
「結果は5.400000です」
「a+r」の部分でint型の変数とdouble型の変数を足しています。
このようにサイズの小さい型とサイズの大きい型を足すとサイズが大きい型に統一されてから計算されます。
サイズの大小は以下のようになります。1 ですので、「a+r」はaの値が2.0に変換されるので1となります。
つまり、int型がdouble型に変換されてから足されます。

では次の例をみてみましょう。1 「a*g」は掛け算ですので、足し算より優先的に計算されます。
そしてaがint型、gがlong型なので、精度の高いlong型に統一されます(つまり、計算する前からaはlong型に統一されます)。
そして、その結果をdouble型のrと足します。
long型とdouble型はどちらが精度が高いでしょうか?下を見ていただければわかりますが、double型のほうが高いですので「a*g」の結果である12はdouble型に変換されてから、3.567を足します。
つまり、式の中で変数の型が異なる時、一番大きい型(精度の高い型)に統一されます。11

カテゴリー
C言語

printfについてもっと知ろう

この章では変換指定文字について説明します。
以下がprintfの変換指定文字です。11 次の例では出力される値の表示幅を指定する方法について説明します。1 結果は以下のように出力されます。1 「%」と「d」の間に数値を入れると、その数値は表示幅を意味します。
この例では5を入力しているので567を1で表示しますが、先頭の2文字分が開いてしまうので、そこにはスペースが入れられます。
出力結果を見ていただくと2文字分のスペースが開いているのが分かります。
1のようにデータの桁数と同じか、もしくは小さい場合には何も指定していないのと同じになります。
「%」と「d」の間に先頭の0を含めた数字を入れると表示幅を意味するのは上の例と同じです。
上の例と違うのは数値を右詰めで表示したときの余ったスペースは0で埋められることです。
この例は05を入力しているので567を右詰めで5桁で表示しますが、先頭の2文字分が開いてしまうので、その場合には0が入れられます。

では次の例をみてみましょう。1 結果は以下の通りです。1 では説明をしていきます。1 =>「%」と「f」の間に数字を入れると、それは表示幅を意味します。
浮動小数点数の場合には小数点も入れた表示幅になりますので、この例では先頭の1文字分が開いてしまいます。
その場合にはスペースが入れられます。
出力結果の上から2つ目を見ていただくと1文字分のスペースが開いているのが分かります。

1 =>「%」と「f」の間に先頭の0を含めたの数字を入れると表示幅を意味するのは上の例と同じです。
先ほどの例と違うのは数値を右詰めで表示したときの余ったスペースは0で埋められることです。
浮動小数点数の場合には小数点も入れた表示幅になりますので、この例では先頭の1文字分が開いてしまいます。
その場合には0が入れられます。出力結果の上から3つ目を見ていただくと1文字分のスペースが0で埋められているのが分かります。

1 =>「%」と「f」の間に小数点を含めた数字を入れると点の左側の数値が表示幅を示し、点の右側の数値が小数点以下の桁数を示します。
例では9桁の表示幅で小数点以下は2桁で設定していますが、余りはスペースで埋められます。
以下の例で10進数である100を8進数と16進数に変えています。1 int型の整数を8進数に変えるには1を使います。
int型の整数を16進数に変えるには1を使います。1 =>100を8進数で表すと0144ですので、出力結果は1になります。
144の前の0が省略された形で出力されます。

1 =>100を16進数で表すと0x64ですので、出力結果は1になります。
64の前の0xが省略された形で出力されます。

次の例は0や0xを省略しないで表示させる例です。1 8進数で0を省略しないで表示するには%とoの間に#を付けます。
16進数で0xを省略しないで表示するには%とxの間に#を付けます。
結果は以下の通りです。1 次の例はテンプレートの中で%を文字として(パーセントとして)出力する場合の例です。1 テンプレートの中で%を文字として(パーセントとして)出力したい場合は1と指定することで%を出力することができます。
結果は1です。

カテゴリー
C言語

データ型についてもっと知ろう

この章ではデータ型についてさらに詳しく説明します。
以下の例ではデータ型の自動変換について説明します。1 変数をintで宣言しているにもかかわらず、1という浮動小数点数を代入していますが、この場合は小数点以下が切り捨てられて、3 になってしまいます。
理由はintは整数を格納する型なので、小数点以下が格納できないためです。
このため、小数点数はintに自動的に変換されます。
バイト数の大きい型から小さい型へ代入する場合、値の一部が失われますので注意してください。
下を見ていただくと解りますが、doubleが一番バイト数の大きい型になります。1

カテゴリー
C言語

データ型について知ろう

この章ではデータ型について説明します。
変数の宣言時に、変数に入れるデータがどのような性質のものなのかを指定するのがデータ型です。
例えば1の場合はintが付いていますが、これは整数だけがaという変数に入れることができます。
データ型は以下の種類に分類することが出来ます。
「整数型」
「浮動小数点数型」
「文字型」
「論理型」

初めに整数型から説明します
整数とは「少数点のない値」のことを言います。
整数は10進数、8進数、16進数などで表せますが10進数は1や100などの我々が普段使っている数字です。
8進数は先頭に0を付けて0144などと書きます。
16進数は先頭に0xを付けて0x41などと書きます。
変数に入れるデータが整数の場合には変数の前にintを付けます。
このintは符号付き整数と呼ばれていまして、プラスの値とマイナスの値が使用できる型です。
以下の例の場合には2という整数を変数に入れるのでintを変数名の前に付けています。1 整数には符号付き整数の他に符号無し整数があります。1
以下の表を見ていただくと分かりますが、符号無し整数はマイナスの値がない分をプラスに使えるので、プラスの扱える範囲が倍になります。1 では「int」や「unsigned int」以外の型(unsigned short,short)を見てみましょう。11
では次の型(long intunsigned long)進みます。11
では次の型(long long,unsigned long long)に進みます。11
次は浮動小数点数型について説明します。1 浮動小数点数は少数点を持つ数値のことをいいますので、1などと表現します。
整数型の最大値を超える場合は浮動小数点数型を使います。
浮動小数点数型はdouble型とfloat型の2種類が有ります。
double型は8バイト=64ビットのサイズで、倍精度浮動小数点数型と呼ばれていますが、桁数が15桁まで表現できます。
float型は4バイト=32ビットのサイズで桁数が8桁まで表現できます。
float型は30.0Fなどと末尾にFもしくはfを付けます。
今ではfloat型はほとんど使われていないので、double型を使用するようにしてください。
では例をみてみましょう。1 printfでfloat型やdouble型のデータを出力するには1を使います。

次は文字型について説明します。1 文字型(char 型)は半角英数字1文字をシングルクォートで囲んだ形で表します。
文字型の値は1バイトで表現されるため、1バイトで表現可能な文字でなければなりません。
日本語のような全角文字の1をシングルクォートで囲っても char 型にはなりません。
文字列(例えば”ねこ”)とは異なり、文字型で表現できのは半角の1文字と覚えてください。
例えば以下のシングルクォートで囲まれたデータは文字型です。1 もう一つ注意してほしいことは文字型は文字という名前が付いていますが、実は文字はコンピュータの中では整数の値として保持されています。
ですので、charは半角英数字1文字の他に1までの整数を入れることができます。
その他に「Unsigned char」があります。
これは「半角英数字1文字」の他に1までの整数値を入れることができます。
では例をみてみましょう。1printfで文字型を出力するときの変換指定子は1です。1

カテゴリー
C言語

変数に関する補足

この章では変数に関する補足をします。
変数の宣言は「同じ型名」であれば複数の変数を以下のようにまとめて書くことが出来ます。
まとめて書く方法は2つあります。1 変数名1と変数名2と変数名3が同じ型名であればまとめて宣言することができます。
その後はそれぞれデータを入れていきます。
では例をみてみましょう。
aとbとcが同じ型なので、まとめてint型で宣言しています。1 111変数名1と変数名2と変数名3が同じ型名であれば、まとめて宣言すると同時に変数を初期化することができます。
この構文の場合も、型名は先頭のみに付けます。1