鱼C论坛

 找回密码
 立即注册
查看: 1699|回复: 2

[已解决]一维数组不定义元素数量只初始化为什么会发生溢出

[复制链接]
发表于 2017-6-23 08:43:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 奥普瓯江 于 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[100][200];     //C输出项 

                bool yan = true;       //判定变量
                char c;




                printf("请输入一个整数: ");
                scanf("%d", &count);




                for( a = 3, i = 0; a <= count; a++, i++ )        
                {
                                h = 0;
                                first[i] = a;
                                //计算
                                max[i] = a * a * a;
                                e = a * a - a + 1;
                                for (f = 0; !(h == max[i]); f++)
                                {
                                                if ( f == 0 )
                                                {
                                                                g = e;
                                                }
                                                else
                                                {
                                                                g = e + 2;
                                                                e = g;
                                                }
                                                yes[i][f] = g;
                                                h = h + yes[i][f];
                                                
                                }
                }

                
                //判断
                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[i], max[i]);

                                
                                                 for ( j = 0; yes[i][j] != 0; ++j)
                                                {
                                                                if( i == 0)
                                                                {
                                                                                printf( j ? " + %d" : " %d",yes[i][j]);
                                                                }
                                                                else
                                                                {
                                                                                if ( j < 2 )
                                                                                {
                                                                                                printf( j ? " + %d" : " %d",yes[i][j]);
                                                                                }
                                                                                else
                                                                                {
                                                                                                if (  yes[i][j + 1] == 0)
                                                                                                {
                                                                                                                printf(" ... + %d", yes[i][j]);
                                                                                                }
                                                                                                else
                                                                                                {
                                                                                                                continue;
                                                                                                }
                                                                                }
                                                                }
                                                }
                                                printf("\n");
                                }
                }
                return 0;
}
最佳答案
2017-6-23 09:42:35
int first[] = {0};  // 初始化为0,意思是为第1个元数初始化为0,其它元素编译器自动填0。不定义数量编译器认为只有一个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-23 09:42:35 | 显示全部楼层    本楼为最佳答案   
int first[] = {0};  // 初始化为0,意思是为第1个元数初始化为0,其它元素编译器自动填0。不定义数量编译器认为只有一个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-23 23:00:11 | 显示全部楼层
不定义编译器会根据你的初始化推断你的长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-3 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表