C语言题 求问已知 int a[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是_B___。

19.已知inta[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是_B___。A)0.166667B)1C)0D)错误的表达... 19.已知 int a[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是_B___。 A) 0.166667 B) 1 C) 0 D) 错误的表达式 20 展开
 我来答
匿名用户
2021-07-13
展开全部
二维数组的实际上在内存里存储格式是一维的
也就是a [3][2]
占用了 3*2 个int 类型数据的 连续内存空间
排放的模式是:
a[0][0] ,a[0][1], a[1][0],a[1][1], a[2][0],a[2][1]
为了表示方便,我打了空格分开了,其实是连续存储的,只是逻辑上认为是二维的而已.
那么考虑初始化的问题,int a[3][2]={3,2,1}; 分别赋值给了a[0][0] ,a[0][1], a[1][0]
现在考虑 a[0][2]到底是什么
a[0][2]其实被编译器解释为 *( (*a+0 ) + 2) ,a是数组首地址,
在C/C++编译器里,数组越界是不检查的,再考虑上面的存储格式
也就是说 ,*( (*a+0 ) + 2) 这个值应该是指向了 *( (*a+0 ) + 1) =a[0][1] 隔壁的家伙
现在你知道是谁了吧,a[1][0]
所以a[0][2]就是a[1][0]=1;
后面的简单算术问题我就不解释了.
PS,不完全初始化话,没有赋值的元素都会被编译器弄成0.
miniapppEgcul9pp1uRf
推荐于2018-03-14 · TA获得超过120个赞
知道答主
回答量:56
采纳率:0%
帮助的人:34.2万
展开全部
首先a[0][0]=3;a[0][1]=2;a[0][2]=1; 而且都是int整型,所以结果也是整型3/2/1=1
追问
为什么3/2/1是1
追答
正常的计算虽然为1.5 但是整型 所以小数点后是不会计入的 全部会舍掉的 所以是1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b627ac2
2014-12-30 · TA获得超过560个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:75.4万
展开全部
a[0][0]是3,a[0][1]是2,a[0][2]是1,3/2/1答案是1
不懂的话可以问我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
请叫我路人已
2014-12-30 · TA获得超过739个赞
知道小有建树答主
回答量:124
采纳率:100%
帮助的人:89.5万
展开全部
3*2排放是:a[0][0] ,a[0][1], a[1][0],a[1][1], a[2][0],a[2][1]
首先 a[0][0]=3 a[0][1]=2 a[0][2]=1
因此 3/2=1 1/1 =1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式