一维数组不定义元素数量只初始化为什么会发生溢出
本帖最后由 奥普瓯江 于 2017-6-23 08:52 编辑不知道片原因是什么还请各位大神给讲解一下麻烦
我用的系统是linux系统,编译用的是GCC,编译的,参数是 gcc -g ......- o.......
#include<stdio.h>
#include<stdbool.h>
int main()
{
int a, e, g, h;
int count; //最大值
int i,f; //计算循环值
int j = 0; //输出循环值
int first[] = {0};//A输出项
int max[] = {0}; //B输出项
int yes; //C输出项
bool yan = true; //判定变量
char c;
printf("请输入一个整数: ");
scanf("%d", &count);
for( a = 3, i = 0; a <= count; a++, i++ )
{
h = 0;
first = a;
//计算
max = a * a * a;
e = a * a - a + 1;
for (f = 0; !(h == max); f++)
{
if ( f == 0 )
{
g = e;
}
else
{
g = e + 2;
e = g;
}
yes = g;
h = h + yes;
}
}
//判断
if (!(h == 0))
{
printf("经验证,3 ~ %d 之间所有的整数均符合尼科切斯定理!\n\n", count);
printf("是否打印所有的式子(y/n): ");
getchar();
scanf("%c", &c);
if ( c == 'n')
{
yan = false;
}
}
else
{
printf("验证失败:整数%d无法找到对应的连续奇数!\n", count);
}
//输出
if(yan)
{
for ( a = 3, i = 0; a <= count; a++, i++ )
{
printf("3^%d = %d =", first, max);
for ( j = 0; yes != 0; ++j)
{
if( i == 0)
{
printf( j ? " + %d" : " %d",yes);
}
else
{
if ( j < 2 )
{
printf( j ? " + %d" : " %d",yes);
}
else
{
if (yes == 0)
{
printf(" ... + %d", yes);
}
else
{
continue;
}
}
}
}
printf("\n");
}
}
return 0;
} int first[] = {0};// 初始化为0,意思是为第1个元数初始化为0,其它元素编译器自动填0。不定义数量编译器认为只有一个元素。 不定义编译器会根据你的初始化推断你的长度
页:
[1]