・p.056「組み込み型とは」から
p.056 組み込み型とは
・C#のデータ型には、あらかじめ用意されている組み込み型と、プログラマが定義できるとユーザ定義型がある。 ・すでに登場したstring、doubleは組み込み型で、doubleは基本型、stringは参照型に分類される ・基本型は1個の大きさが決まっている型で、整数型、実数(浮動小数点数)型、文字型、論理型がある。 ・整数型は大きさが4種類あり、種類ごとに符号有りと符号無し(0と正の数のみ)がある。 ・整数型:符号有り4種類 ①sbyte 8ビット -128~127 ②short 16ビット -32,768~32,767 ③int 32ビット -2,147,483,648~2,147,483,647 ※整数型の代表 ④long 64ビット -9223372036854775808~9223372036854775807 ・整数型:符号無し4種類 ①byte 8ビット 0~255 ②ushort 16ビット 0~65535 ③uint 32ビット 0~4294967296 ④ulong 64ビット 0~18446744073709551616 ・実数型:3種類(全て符号有り ①float 32ビット -3.402823E+38~3.402823E+38 単精度浮動小数点数用(誤差が大きい) ②double 64ビット -1.79769313486232E+308~1.79769313486232E+308 倍精度浮動小数点数用(誤差が小さい) ③decimal 128ビット :-79228162514264337593543950335~79228162514264337593543950335 誤差がほぼ無い (ほぼ-7.9E+29~7.9E+29)
ミニ演習 mini056.cs
・整数型、実数型の最大値、最小値は「型名.MaxValue」「型名.MinValue」で得られることを確認しよう ・実数型の最大値、最小値が指数表記になることを確認しよう ⇒指数表記は実数を「●×10の±■乗」に変換して「●E±■」という書式にしたもの。 ●が1.0~9.999…になるように■を調整するのが一般的。 (0.0~0.999…になるように調整する形式もある) 例:314.1592 ⇒ 3.141592×10の2乗 ⇒ 3.141592E+2
作成例
using UnityEngine;
public class mini056 : MonoBehaviour {
void Start() {
Debug.Log("sbyte Min:" + sbyte.MinValue + " Max:" + sbyte.MaxValue);
Debug.Log("short Min:" + short.MinValue + " Max:" + short.MaxValue);
Debug.Log("int Min:" + int.MinValue + " Max:" + int.MaxValue);
Debug.Log("long Min:" + long.MinValue + " Max:" + long.MaxValue);
Debug.Log("byte Min:" + byte.MinValue + " Max:" + byte.MaxValue);
Debug.Log("ushort Min:" + ushort.MinValue + " Max:" + ushort.MaxValue);
Debug.Log("uint Min:" + uint.MinValue + " Max:" + uint.MaxValue);
Debug.Log("ulong Min:" + ulong.MinValue + " Max:" + ulong.MaxValue);
Debug.Log("float Min:" + float.MinValue + " Max:" + float.MaxValue);
Debug.Log("double Min:" + double.MinValue + " Max:" + double.MaxValue);
Debug.Log("decimal Min:" + decimal.MinValue + " Max:" + decimal.MaxValue);
}
}
p.056 組み込み型とは(つづき)
・文字型 ①char 16ビット(半角文字であっても16ビット)文字1文字のみ ・論理型 ①bool 情報量としては1ビット分 真偽(true/false)のみ ・文字列型(参照型) ①string 参照型で文字列の参照(≒位置情報)を持つ
p.056 補足:組み込み型の使い分け
・整数型は内部的にint型で扱われるので、int型にしておくと効率が良い ・実数型は内部的にdouble型で扱われるので、double型にしておくと効率が良い ・ただし、大量のデータを扱うにはbyte、shortなどにしてメモリを節約可能 ・また、Unityでは内部的にflortを用いることが多い ・符号無し型は、絶対に負の数にはならない場合などに用いるとトラブルを防止できる
p.056 補足:組み込み型と整数/実数リテラル
・テキストp.056「代表的な組み込み型」の「値の書き方」は型に対応するリテラルの書式の説明になっている ・整数リテラルはint型扱いになる(sbyte/short型にも代入可能) ・なお、int型の範囲を超える整数リテラルは値に応じて自動的にuint、long、ulong型扱いになる ・整数リテラルの末尾に「u」または「U」をつけることでuint型扱いを明示できる ・整数リテラルの末尾に「l」または「L」をつけることでlong型扱いを明示できる(※通常「l」は推奨されない) ・整数リテラルの末尾に「ul」または「UL」をつけることでulong型扱いを明示できる ・実数リテラルはdouble型扱いになる(指数表記も可能だが、float/decimalには代入できない) ・実数リテラルの末尾に「f」または「F」をつけることでfloat型扱いになる ・実数リテラルの末尾に「m」または「M」をつけることでdecimal型扱いになる
ミニ演習 mini056a.cs
・上記を試すプログラムを作ろう ・すべての整数型、実数型の変数を初期化して表示すればよい ・文法エラーになるものはコメントアウトしよう
作成例
using UnityEngine;
public class mini056a : MonoBehaviour {
void Start() {
sbyte sb = 100; Debug.Log("sbyte : " + sb);
// sbyte sb = 300; Debug.Log("sbyte : " + sb); 範囲超過でエラー
short sh = 100; Debug.Log("short : " + sh);
// short sh = 90100; Debug.Log("short : " + sh); 範囲超過でエラー
int it = 100; Debug.Log("int : " + it);
// int it = 2200000000; Debug.Log("int : " + it); 範囲超過でエラー
long lo = 2200000000; Debug.Log("long : " + lo);
long ln = 2200000000L; Debug.Log("long : " + ln); //「L」で明示可能
byte by = 100; Debug.Log("byte : " + by);
//byte by = -100; Debug.Log("byte : " + by); 負の数不可でエラー
ushort us = 100; Debug.Log("ushort : " + us);
uint ui = 2200000000; Debug.Log("uint : " + ui); //「U」省略可
uint un = 2200000000U; Debug.Log("uint : " + un); //「U」で明示可能
ulong ug = 2200000000; Debug.Log("ulong : " + ug); //「UL」省略可
ulong ul = 2200000000UL; Debug.Log("ulong : " + ul); //「UL」で明示可能
//float fl = 3.14; Debug.Log("float : " + fl); //3.14はdouble型なのでエラー
float fl = 3.14F; Debug.Log("float : " + fl); //「F」で明示必須
double du = 3.141592E+2; Debug.Log("double : " + du); //指数表記可
//decimal dc = 3.14; Debug.Log("decimal :" + dc); //3.14はdouble型なのでエラー
decimal dc = 3.14M; Debug.Log("decimal :" + dc); //「M」で明示必須
}
}