对二维数组的赋值问题
正在学数组这一章。我在对二维数组赋值的赋值的时候发现了一个问题,代码:#include <stdio.h>int main(int argc, char *argv[])
{
int a={{3},4,5,{2}};
return 0;
}
我调试了一下发现赋值出来分别是:{{3,0,0}{4,5,2,{0,0,0}}}
这是怎么回事
要看C语言的编译器的对多维数组负值规则,
int a={{3},4,5,{2}};
a 数组 首先会把{3}看成是{3,0,0}一行,负值给a
然后按顺序把{4,5,后面还少一个数,{2} 刚好里面有一个数,组成一组{4,5,2}给a
最后初始化值里没有数据啦,就按编译器的规则直接负值0,0,0给a
过程就是这样
其实,我们不可以做一个这样的实验 int a={{3},4,5,{2,1}};看这样负值,会是什么样的结果
当然,我们不推荐在写程序的时候搞得这么不可控,但是可以在学习过程中去测试,了解计算机会是一个什么样的思维处理,来增加我们的知识,我们一切要以电脑的实验结果为准,多试验。{:1_1:} 下面那个图片弄错了 你这不是跟自己过不去么?要不就都写{},要不就都不写 int a={3,0,0,4,5,0,2,0,0};
int a={{3},{4,5,0},{2,0,0}}; 楼上正解 这个不知道为什么,看了一下汇编,可能是编译器的原因吧 复制错误了 谢谢 2维数组要么用{},要么都不用,这样比较好
页:
[1]