鱼C论坛

 找回密码
 立即注册
查看: 1955|回复: 8

对二维数组的赋值问题

[复制链接]
发表于 2014-8-11 15:28:02 | 显示全部楼层 |阅读模式
1鱼币
正在学数组这一章。
我在对二维数组赋值的赋值的时候发现了一个问题,代码:#include <stdio.h>int main(int argc, char *argv[])
{
        int a[3][3]={{3},4,5,{2}};
        return 0;
}
我调试了一下发现赋值出来分别是:{{3,0,0}{4,5,2,{0,0,0}}}
这是怎么回事



未命名.JPG

最佳答案

查看完整内容

要看C语言的编译器的对多维数组负值规则, int a[3][3]={{3},4,5,{2}}; a[row][col] 数组 首先会把{3}看成是{3,0,0}一行,负值给a[0][col] 然后按顺序把{4,5,后面还少一个数,{2} 刚好里面有一个数,组成一组{4,5,2}给a[1][col] 最后初始化值里没有数据啦,就按编译器的规则直接负值0,0,0给a[2][col] 过程就是这样 其实,我们不可以做一个这样的实验 int a[3][3]={{3},4,5,{2,1}};看这样负值,会是什么样的结果 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-11 15:28:03 | 显示全部楼层
要看C语言的编译器的对多维数组负值规则,
int a[3][3]={{3},4,5,{2}};
a[row][col] 数组 首先会把{3}看成是{3,0,0}一行,负值给a[0][col]
  然后按顺序把{4,5,后面还少一个数,{2} 刚好里面有一个数,组成一组{4,5,2}给a[1][col]
最后初始化值里没有数据啦,就按编译器的规则直接负值0,0,0给a[2][col]
过程就是这样

其实,我们不可以做一个这样的实验 int a[3][3]={{3},4,5,{2,1}};看这样负值,会是什么样的结果
当然,我们不推荐在写程序的时候搞得这么不可控,但是可以在学习过程中去测试,了解计算机会是一个什么样的思维处理,来增加我们的知识,我们一切要以电脑的实验结果为准,多试验。{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-11 15:29:01 | 显示全部楼层
下面那个图片弄错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-11 15:57:12 | 显示全部楼层
[b]你这不是跟自己过不去么?要不就都写{},要不就都不写
 int a[3][3]={3,0,0,4,5,0,2,0,0};
 int a[3][3]={{3},{4,5,0},{2,0,0}};
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-11 19:14:29 | 显示全部楼层
楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-11 22:13:29 | 显示全部楼层
这个不知道为什么,看了一下汇编,可能是编译器的原因吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 12:26:34 | 显示全部楼层
复制错误了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-12 13:00:44 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-14 12:57:02 | 显示全部楼层
2维数组要么用{},要么都不用,这样比较好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-30 03:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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