求详细解析为什么以下程序的运行结果是3200?

#include " stdio. h"

void main( )


int i;

int a[8][8]= {20 ,30 ,32 ,50 ,52,68 ,52 ,88,72,78 ,61 ,89,1,4,101,24,11,14,97,83}

for(i=0;i<6;i++)

printf(“%d”,a[i++][1+i]);

a是8行*8列的二维数组,有64个数值, 只初始化了前面20个值,后面的默认为0, 如
    0列  1列 2列 3列 4列 5列 6列 7列
0行: 20 ,30 ,32 ,50 ,52 ,68 ,52 ,88
1行: 72 ,78 ,61 ,89 , 1 , 4,101 ,24
2行: 11 ,14 ,97 ,83 , 0 , 0 , 0 , 0
3行:  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
4行:  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
5行:  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
6行:  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
7行:  0 , 0 , 0 , 0 , 0 , 0 , 0 , 0

i++ 是先返回i原本的值, 再对i加1
循环初始i=0;
第一次循环输出a[i++][1+i] 先i++返回 0 作为行下标,之后i加1变成 1 ,再用1+i=2作为列下标, 输出0行2列的值 32
每次循环之后还要i++ i加1变成2 ,循环条件i<6成立,继续循环
第二次循环输出a[i++][1+i] 先i++返回 2 作为行下标,之后i加1变成 3 ,再用1+i=4作为列下标, 输出2行4列的值 0
循环之后还要i++ i加1变成4 ,循环条件i<6成立,继续循环
第三次循环输出a[i++][1+i] 先i++返回 4 作为行下标,之后i加1变成 5 ,再用1+i=6作为列下标, 输出4行6列的值 0
循环之后还要i++ i加1变成6 ,循环条件i<6不成立,结束循环

最终输出 3200

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

知识点就是: i++ 是先返回值,再计算自增1

i++先取值,后加
所以代码等价于
for(i=0;i<6;i+=2)
printf(“%d”,a[i][1+i]);

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632