| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 949 人关注过本帖, 1 人收藏
标题:C语言,求一句解释啊!
只看楼主 加入收藏
tianjom
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-27
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:15 
C语言,求一句解释啊!
#include<stdio.h>
void main()
{ int i,j,x=0;
 static int a[8][8];
 for(i=0;i<3;i++)
     for(j=0;j<3;j++)
         a[i][j]=2*i+j;
 for(i=0;i<8;i++)
     x+=a[i][j];
 printf("%d\n",x);
}
最后的结果是0,但我搞不懂第二个for循环中仅有i循环,没j,怎么确定j的值以致算出最后的结果的?求高手解释啊!给分给分
搜索更多相关主题的帖子: C语言 
2012-02-27 21:31
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
单步调试下,就能知道J在第二个FOR循环中的值。

梅尚程荀
马谭杨奚







                                                       
2012-02-27 21:34
tianjom
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-27
收藏
得分:0 
回复 2楼 有容就大
我试了的,值全是0,最后加起来也是0,就是不知道怎么确定j的

贵有恒,何必三更起五更睡;
最无益,只怕一日曝十日寒!
2012-02-27 21:36
mayuebo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:257
专家分:1282
注 册:2005-9-8
收藏
得分:5 
int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
     for(j=0;j<3;j++)
         a[i][j]=2*i+j; 给数组赋值
for(i=0;i<8;i++)
     x+=a[i][j]; J是MAIN函数内的全局变量,所以在这里J=3
printf("%d\n",x);

成功贵在坚持
2012-02-27 21:36
tianjom
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-2-27
收藏
得分:0 
回复 4楼 mayuebo
全局变量,怎么看出是全局变量啊?求解释

贵有恒,何必三更起五更睡;
最无益,只怕一日曝十日寒!
2012-02-27 21:38
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:15 
a[0][0]=0
a[0][1]=1
a[0][2]=2
a[1][0]=2
a[1][1]=3
a[1][2]=4
a[2][0]=4
a[2][1]=5
a[2][2]=6

a[0][3]=0
a[1][3]=0
a[2][3]=0
a[3][3]=0
a[4][3]=0
a[5][3]=0
a[6][3]=0
a[7][3]=0
0


2012-02-27 21:46
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:

int _tmain(int argc, _TCHAR* argv[])
{
    int i,j,x=0;
    static int a[8][8];
    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            a[i][j] = 2 * i + j;
            printf("a[%d][%d]=%d\n",i,j,a[i][j]);
        }
    }
    printf("\n");
    for(i=0; i<8; i++)
    {
        x += a[i][j];
        printf("a[%d][%d]=%d\n",i,j,a[i][j]);
    }
    printf("%d\n",x);
}



1 良好的代码风格有助于提高程序的可读性

2 不会调试可以加调试语句一看便知 不必解释
收到的鲜花
  • tianjom2012-02-27 22:00 送鲜花  3朵   附言:我很赞同
2012-02-27 21:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用mayuebo在2012-2-27 21:36:17的发言:

int i,j,x=0;
static int a[8][8];
for(i=0;i<3;i++)
     for(j=0;j<3;j++)
         a[j]=2*i+j; 给数组赋值
for(i=0;i<8;i++)
     x+=a[j]; J是MAIN函数内的全局变量,所以在这里J=3
printf("%d\n",x);

貌似这个叫局部变量
2012-02-27 22:05
杨松松
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:98
专家分:142
注 册:2011-12-3
收藏
得分:0 
static是静态存储,他的效果是即使退出函数后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。所以j的值仍是3.然后为啥是0,楼上的高手们已经解释了。
2012-02-27 22:38
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
收藏
得分:0 
答案
   for(i=0; i<8; i++)
        for(j=0; j<8; j++)
            x+=a[i][j];
 

明显你第2个循环的J一直是8,而根本就没有a[i][8]这个变量,已经越界了。

勤奋不止,自强不息。
2012-02-28 10:50
快速回复:C语言,求一句解释啊!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026583 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved