整数には short, int がありますが short と int は size が異なります。
#include <iostream.h> int main() { cout << "short : " << sizeof(short) << endl ; cout << "int : " << sizeof(int) << endl ; cout << "float : " << sizeof(float) << endl ; cout << "double : " << sizeof(double) << endl ; cout << "long double : " << sizeof(long double) << endl ; cout << "char : " << sizeof(char) << endl ; return 0 ; } |
Windows2000 Visual C++ |
Debian GNU/Linux g++ |
||
|
|
という結果になります。
この場合、long double に 8 と 12 の違いがあります。
このように、同じ Hard であっても variable の容量に違いが有ります。
まず、sizeof() とは標準のC++(include の必要は無し)にあります。
しかし cout を使っているので、include で iostream.h を指定しています。
sizeof() は size を byte の単位で返り値を出力します。
つまり 2 は 2 byte, 4 は 4 byte になるわけです。
2byte は 16 bit ですし、4 byte は 32 bit です。
bit や byte がわからない人は 二進数の項目 を参照してください。
まず Variable の基本的な使い方を含めて整数を扱います。
#include <iostream.h> int main() { int i = 0 ; cout << i ; return 0 ; } |
0 |
[宣言不可能な変数名] |
[宣言可能な変数名] |
|
|
また、関数名同様に
さて整数型変数の説明に戻ります。
整数型変数には初期化という作業が必要になります。
つまり次の sample には問題があります。
#include <iostream.h> int main() { int i ; cout << i ; return 0 ; } |
#include <iostream.h> int main() { int i ; i = 1000 ; cout << i ; return 0 ; } |
1000 |
つまり宣言時には、変数 i はその size の領域を確保されています。
もっといえば、確保されただけで、内容状態としては、そのままなのです。
俗にいうゴミが入っている事になります。
ここに、はじめて programmer が意図とする data を代入することによって初期化されます。
具体的には宣言されたときに int 型変数 i の示す領域が 著者の環境では 4 byte でした。
それを例にしますと 4 byte の memory に 二進数表記で
さて 小数 literal を整数型変数に代入するとどうなるのでしょう。
#include <iostream.h> int main() { short i ; i = 234.56 ; cout << i ; return 0 ; } |
#include <iostream.h> int main() { float f ; f = 234.56 ; cout << f ; return 0 ; } |
234.56 |
#include <iostream.h> int main() { char c1, c2 ; c1 = 'A' ; c2 = 'B' ; cout << c1 << c2 << endl ; return 0 ; } |
AB |
#include <iostream.h> int main() { char c ; c = 65 ; cout << c << endl ; return 0 ; } |
A |
#include <iostream.h> int main() { char c11, c12, c13, c21, c22, c23 ; c11 = 65 ; c12 = 66 ; c13 = 90 ; c21 = 97 ; c22 = 98 ; c23 = 122 ; cout << c11 << c12 << "…" << c13 << endl ; cout << c21 << c22 << "…" << c23 << endl ; return 0 ; } |
AB…Z ab…z |
文字 |
ASCII [十進数表記] |
ASCII [二進数表記] (char size) |
A | 65 | 0100 0001 |
B | 66 | 0100 0010 |
: | : | : |
Z | 90 | 0101 1010 |
a | 97 | 0110 0001 |
b | 98 | 0110 0010 |
: | : | : |
z | 122 | 0111 1010 |