1. 在全局域中声明的变量会自动初始化为0,如:
double salary; int day;
2. 如果变量是在局部域中定义的,或是通过new表达式动态分配的,则系统不会向它提供初始值0,这些对象被认为是未初始化,其值随机。而变量是类对象会通过缺省构造函数自动初始化。
3. C++支持两种形式的初始化:
a:使用赋值操作符的显示语法形式。如:intival=1024;
b:隐式形式,初始值被放在括号中。如:intival(1024);
4. 数组可以显示地用一组数初始化,如:
const intaray_size=3;
int ia[aray_size]={0,1,2};
inta[5] ={0}; //a的各个元素都初始化为0
如果指定的维数大于给定的元素的个数,没有被显示初始化的元素将置为0。也可以不指定维数值,如:int ia[]={0,1,2};
5. 全局变量的初始化
此外也没办法捕捉到全局变量初始化抛出的异常,一般来说要减少全局变量的使用,特别是限制那些要求复杂初始化的全局变量。so:
a,尽量不用全局变量
b,用静态变量,通过访问器进行访问
在C语言中,只能用常数对全局变量进行初始化,否则编译器会报错。
在C++中,如果在一个文件中定义了int a = 5;要在另一个文件中定义int b = a;的话,前面必须对a进行声明:extern inta;否则编译不通过.即使是这样,int b = a;这句话也是分两步进行的:在编译阶段,编译器把b当作是未初始化数据而将它初始化为0;在执行阶段,在main被执行前有一个全局对象的构造过程,intb = a;被当作是int型对象b的拷贝初始化构造来执行。
其实,准确地说,在C++中全局对象、变量的初始化是独立的,如果不是像inta=5这样的已初始化数据,那么就是像b这样的未初始化数据。
而C++中全局对象、变量的构造函数调用顺序是跟声明有一定关系的,即在同一个文件中先声明的先调用。对于不同文件中的全局对象、变量,它们的构造函数调用顺序是未定义的,取决于具体的编译器。
6.整型数的范围
Unsignedint 0~4294967295 //10位
int -2147483648~2147483647 //10位
unsigned long 0~4294967295 //10位
long -2147483648~2147483647 //10位
long long的最大值:9223372036854775807 //19位
long long的最小值:-9223372036854775808 //19位
unsigned long long的最大值:18446744073709551615 //20位
__int64的最大值:9223372036854775807 //19位
__int64的最小值:-9223372036854775808 //19位
unsigned __int64的最大值:18446744073709551615 //20位