整数には 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 |