データ型は様々なものがありますが、大きく分けて整数と実数です。
後は値の範囲と確保するメモリ数の違いです。
整数の場合はchar<int<long<です。
char型は文字に使用するということも覚えておいてください。
実数の場合はfloat<doubleです。
さらに正負をあらわす符合の有無でunsignedがつくかつかないかです。
unsignedがつくと符号無し、signedがつくか何も無い場合は有りです。
符号ありの場合は省略するのが一般的なのでつけないほうがよいです。
floatもメモリ節約以外の目的では使うことは無いので、覚える程度でいいです。
ちなみに、char型以外は環境によって値の範囲などが異なります。
このいい加減な部分は不健全だと思いますけどね…。
キャストとは型が違う変数同士の代入などに使用します。
ただし、状況によってはコンパイラが自動的に行うので、
しないでいい場合も多いです。自分はキャストをわざわざ
することは嫌うので、極力しないようにしますが;;
// 文字変数の宣言
char c;
// 変数の宣言
int i;
// 変数の宣言(大きいサイズ)
long l;
// 変数の宣言(実数)
float f;
// 変数の宣言(実数大きいサイズ)
double d;
void main(){
// 明示的なキャスト
i = (int)d;
}
ちなみに符号をあらわす概念はバイナリである2進数でいうと、
最も上位の位のビットで表します。
普段は必要なさそうな知識ですが、ハードウェアに密接な
プログラムを行ううえでは、必要な知識です。
そうでなくても、ビット演算を行うにも必要です。
知っていて損は無いでしょう。それぞれの値の場合をそれぞれ示しますので、
とりあえず頭に入れておいてください。
符号が負の場合は進み方が逆転します。なんかややこしいですね;;
char型とunsignedの場合として
00000000…符号なし0、符号あり0
10000000…符号なし128、符号あり-128
11111111…符号なし255、符号あり-1