博士「?」

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


困った顔のぷうさん

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


博士「(^^♪」

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


ぷうさん

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


困った顔の博士

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


ぷうさん「怒」

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


困った顔の博士

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


ぷうさん

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


博士

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


ぷうさん「(^^♪」

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


博士「×」

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


ぷうさん「OK」

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


困った顔の博士

そうかね・・・


ぷうさん「?」

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


困った顔の博士

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


ぷうさん

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


博士「×」

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


困った顔のぷうさん

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


博士

ばれたか・・・・。


ぷうさん「(^^♪」

やっぱし~・・・・


博士「(^^♪」

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


ぷうさん

へえへ。早く片づけてしまいやしょうや。

浮動小数点型と数学関数

博士「ここをチェックじゃ」

今までは文字型と整数型を教えてきたが、今度は小数点以下も使う「浮動小数点型」について教えるぞい。

文字型(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

ポイント「キャスト式」とは

博士

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


ぷうさん「OK」

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


博士「Good!」

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


ぷうさん「(^^♪」

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


博士「怒」

勝手にそう覚えておけ!

定数について

博士

ところでじゃ、「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

その二 ビット間の処理へ

七日目 数値アラカルト 目次

六日目へ

ぷうさんの七日間戦争 七日目

教科書