
大丈夫じゃったかの、ぷうさんや。

・・・大丈夫じゃないけど・・・生きてる。

・・・生きておれば結構。

結構毛だらけ、猫、灰だらけ。
お猿のお尻は真っ赤っか!

・・・相当、重症のようじゃが・・・・今日は休みにしようかの?

昨日、私が休みにしようって言ったのに、だめだって言ったのは、誰でしたっけ?

・・・・・じゃがなぁ・・・まだ酷い後遺症が残っておるようじゃからのお・・・

んなもん治ってたって、C始めればまたおかしくなるって。
さあ、さっさと片付けてしまおう!

片づければいいってもんじゃないんじゃが。
理解してないと、の。

気が楽になるだけいいんじゃない?

そうじゃが、これは、まず第一歩であってじゃな、これから、この本を参考にして、問題集をこなしていかぬことには・・・

苦しんだ甲斐がないってことでしょ?分かってるって!
でも、ほんの少しだけど分かってきたような気がするし、本一冊終えたってことは、励みにもなるんよ!

そうかね・・・

博士?なんか気が乗らないみたいだね?

・・・終わってしまうと、もうこうして来れないんでの。

どうしてぇ?これからも時々出てこればいいじゃない。・・・じゃないと私が(多分)困る。
どうせ問題集で躓いているって☆

・・・そんな自信はいらないぞい。

それに、私みたいなおかしなのともう付き合わなくてもいいから、本当はせいせいしてるんじゃない?

ばれたか・・・・。

やっぱし~・・・・

では、早速始めようかの。

へえへ。早く片づけてしまいやしょうや。
浮動小数点型と数学関数

今までは文字型と整数型を教えてきたが、今度は小数点以下も使う「浮動小数点型」について教えるぞい。
- 文字型(char)
- signed char:符号付き文字型(1バイト)
unsigned char:符号なし文字型(1バイト)単にcharの場合、どちらか決まっていない。
- 整数型(int)
- short int:intより狭い範囲の値を表現できる整数
int:計算機の自然な整数
long int:intより広い範囲の値を表現できる整数signed、unsignedの指定もできる。
- 浮動小数点型
- float:単精度小数(4バイト)
double:倍精度小数(8バイト)
long double:長精度小数(doubleより広い範囲)

sin、log、平方根・・それを使う何らかの数学的な計算の時以外、あまり使われないが、
ceil(小数点を切り上げる)、floor(小数点を切り捨てる)、fabs(絶対値)は、比較的よく使われるぞい。
数学関数は、専用のファイルに用意されているぞい。
ヘッダ・ファイル
math.h
#include <math.h>
数学関数 一覧
- 三角関数:正弦
- double sin( double x )
- 三角関数:余弦
- double cos( double x )
- 三角関数:正接
- double tan( double x )
- 指数関数ex
- double exp( double x )
- 自然対数
- double log( double x )
- 基定10対数(常用対数)
- double log10( double x )
- べき乗(xのy乗)
- double pow( double x, double y )
- 平方根
- double sqrt( double x )
- 小数点の切り上げ
- double ceil( double x )
- 小数点の切り捨て
- double floor( double x )
- 絶対値
- double fabs( double x )

・・・数学なんて・・・数学なんて、どあいっきらいだぁ~っ!
聞いただけでじんましんがっ!

・・・おいおい。
せめて実数で計算させるには、「float」 型でという事だけでも覚えておいとくれ。
float型宣言と今までの「%d」のところを「%f」とするんじゃ。
「%f」が実数表示じゃぞ。

実数ねえ・・・

そうじゃ、int型変数には小数点を入れるところがないんじゃ。
じゃから、もし小数点以下の答えがでる計算をさせても、小数点以下は表示してくれないんじゃ。

ふ~ん。

次のプログラムと実行結果を見てるんじゃ。
よく分かるぞい。
整数と浮動小数点の表示比較プログラム
#include <stdio.h> main() { int a; float b; //int型のaは小数点を入れる所がない a=3/5; printf("case1 %d/n",a); a=3.0/5.0; printf("case2 %d/n",a); b=3/5; //整数で計算=0 printf("case3 %f/n",b); b=3.0/5.0; //実数で計算 printf("case4 %f/n",b); //float型でキャスト(実数で計算) b=(float)3/5; printf("case5 %f/n",b); }
実行結果
case1 0
case2 0
case3 0.000000
case4 0.600000
case5 0.600000
ポイント「キャスト式」とは

どうじゃな、納得できたかの?

そうですな・・・できたでしょうな。

ある型に変換して計算を行わせたい時は、
( )で型を囲んで数値の前につけるとその型で計算されるんじゃ。
それをキャスト式と呼ぶんじゃ。

ほうほう・・・そのままじゃできないってんで、キャストして(投げ出して)、違う型をキャスト(配役)してやらせるってわけでやすな、旦那。

勝手にそう覚えておけ!
定数について

ところでじゃ、「3」と「03」と「3.0」。
・・・この違い分かるかな?

見ての通りでやんしよ?書き方が違うでやんすよ。

そうじゃ。・・・じゃな~いっ!!
違いを下にあげるぞい!!
- 10進数の整数
- 100:単に10進数を書く
100L:longの時は、Lをつける
printf文等で表示する場合は「%d」 - 浮動小数点の定数
- 10.0:小数点をつける(double型となる)
10.0F:float型
10.0L:long、double型
printf文等で表示する場合は「%f」 - 8進数
- 010:先頭に0をつける
printf文等で表示する場合は「%o」 - 10進数
- 0x10:先頭に0xをつける
printf文等で表示する場合は「%x」 - 文字
- ‘A’:’(引用符)で囲む
printf文等で表示する場合、一文字の時は「%c」
printf文等で表示する場合、文字列の時は「%s」

分かったかな?

へっ?何がでやすか?

じゃ~から・・・ったく!
「3」は10進数の整数、「03」は8進数、「3.0」は実数なんじゃ。

さ~すが、旦那!
おつむの回転があっしと違うようで・・・

はー・・・・
8進数、10進数、16進数のプログラム
include <stdio.h> main() { int a; a=30; printf("case1 %x %d %o\n",a,a,a); a=030; printf("case2 %x %d %o\n",a,a,a); a=0x30; printf("case3 %x %d %o\n",a,a,a); }
実行結果
case1 1e 30 36
case2 18 24 30
case3 30 48 60