### 変数の宣言
int a, b;
a = 10;
a = 20 + 30; // a=50
b = a; // b=50
b = a + 100; // b=150
b = b + 200; // b=350;
※const変数は値を参照できるが変更はできない
### データ型
char(1byte): -128〜127
unsigned char(1byte): 0〜255
int(4byte): -2147483648〜2147483648
unsigned int(4byte): 0〜4294967295
short int(2byte): -32768〜32767
unsigned short int(2byte): 0〜65535
long int(4byte): -214783648〜214783647
unsigned long int(4byte): 0〜4294967295
float(4byte): 10^-37〜10^38
double(8byte): 10^-307〜10^308
long double: doubleと同じかそれより大きい
※バイトはメモリ内に確保されるメモリサイズ
※unsignedはマイナスの符号なしのデータ表現
※signed, unsigned, short, longが先行する場合はintを省略できる
※初級ではint, char, doubleがよく使用される
int main(void){ printf("%d\n", sizeof(char)); printf("%d\n", sizeof(int)); return 0; }
$ ./dev
1
4
### データ型の性格
– char型は1byteだが、int型は4byte, char型の配列を文字列型と称することがある
– double, floatなどの浮動小数点の値をint型に入れようとすると、小数点以下が切り離される ※四捨五入はなし
### 整数値のオーバーフロー
2147483647に、1をプラスすると、オーバーフローして、-2147483648になる。
int main(void){ int a; a = 2147483647; a = a + 3; printf("%d\n", a); return 0; }
### floatとdoubleの使い分け
浮動小数点数は通常double型が使われる。sin, cos, tanなどは全てdouble型を返す
floatは、大量のfloat型データを使用する際など、メモリ領域を節約したい時に有効
### 配列
int dt[10];
dt[10] = 100; // 不正、dt[10]はdt[0]〜dt[9]
### 多次元配列
int a[2][3]; // 二次元配列、配列長3の配列を2組用意した構成
int b[5][6][7]; // 三次元配列
※二次元配列以外を使うのは稀
int main(void){ int dt[3][5]; dt[0][0] = 11; dt[1][3] = 55; dt[2][4] = 66; printf("%d\n", dt[0][0]); printf("%d\n", dt[1][3]); printf("%d\n", dt[2][4]); return 0; }
多次元配列や行列には慣れないといけませんね。