目录
1.枚举enum
enum string { x1, x2, x3=10, x4, x5, }x; 问x= 0x801005,0x8010f4 ;
x是枚举string的一个枚举变量,因为枚举的特殊意义。定义在函数外是全局变量,程序初始化为0;若是定义在函数内,编译器提示变量未初始化错误。此时x1=0,x2=1,x3=10,x4=11,x5=12。(枚举的赋值一般是从0开始递增,若有程序员主动赋值,则之后的变量值依次递增)
2.枚举变量的定义
前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。
我们可以通过以下三种方式来定义枚举变量
1)定义枚举类型,再定义枚举变量
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
2)定义枚举类型的同时定义枚举变量
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3)省略枚举名称,直接定义枚举变量
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
3.请问下面程序有什么错误?
int a[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
截图:
这里代码退出。是不正常的。
做如下更改:
1)在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。
2)栈溢出,原因是局部变量是存储在栈中的,栈的容量不足以放下这样的大数组。
int main()
{
int a[60][250][1000], i, j, k;
for (i = 0; i < 60; i++)
{
for (j = 0; j < 250; j++)
{
for (k = 0; k <= 1000; k++)
{
a[i][j][k] = 0;
}
}
}
}
截图:
总结:还是不正常退出,原因是数组太大,导致栈溢出
做如下修改:
int main()
{
int a[3][4][5], i, j, k;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
for (k = 0; k < 5; k++)
{
a[i][j][k] = 0;
}
}
}
}
截图:
总结:数组一定要注意边界条件,不能越界,其次就是防止栈溢出,数组不能太大。