若有定义语句:int a[ ]={1, 2, 3, 4};i=3;则下面对 m 数组元素的引用中错误

来源:360问答  责任编辑:小易  

结果为:a=26,b=13,c=19三个值起始为:a=25,b=14,c=19;if(a+),首先判断a,成立,然后a+26,然后判断b,不成立(b=14),然后b-=13,由于三个判断之间为&运算符,只要有不成立的,即不往下判断,跳出,执行else语句,此时三个值分别为:a=26;b=13;c=19;其实这个题出的挺好的!www.zgxue.com防采集请勿采集本网。

  A.  a[--i]             B.  a[2*2]     C.  a[a[0]]         D.  a[a[i-1]]

那个表达式的值的确是5,但是那个表达式之后a就为6了。

答案为

      B.  a[2*2]    

a+a-=a+a,运算符和结合性,由运算符优先级,+优先级为4,-=和+优先级为14,+结合方向从左至右,+和-+从右至左, 所以: 先计算(a+a),a=12,a+a=12+12=24 再计算 a-=(a+a),即a=a-(a+a)=12-24=-12

a[]={1,2,3,4} 它下标最大为3,不能用a[4]的

值为0 这样的定义之后,a是一个[3][3]的二维数组,初始化中,对a的0 0、1 0、2 0三组下标位置进行了初始化数据,其它数据被默认为0.

核心在于p的类型。定义等效于int*p[3];这里p是一个数组,包含三个元素,每个元素类型为int*所以A p为数组名,不可以赋值。B p[0]为int*,而a为二维数组名,等效于int*,类型不匹配。C a[1][2]为a的一个元素,类型是int,所以&a[1][2]是int*,和p[0]类型相同,所以这个赋值是合法的。D 这个没什么说的了,错的比B还离谱,int*,赋值给int*,类型不匹配内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 大一C语言题目 24、若有定义语句:int a[2][3],*p[3]; ,则以下
  • 若有定义语句“(int a =25,b=14,c=19)”则下列语句的执行结果是(?)
  • 若有定义语句:int a=5;,则表达式:a++的值是? 。
  • 若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是
  • 若有定义语句int a=5,则表达式:a++的值是 答案是5,为什么不是6呢,我知道a++是先用
  • 若有定义语句int a=12,则执行表达式a+=a-=a+a后a的值为
  • 设有定义语句“int a[][3]={{0},{1},{2}};"则a[1][2]的值为多少?能有详细解题步骤吗
  • 若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是
  • 若有定义语句int a,b; double x;下列选项中没有错误的是
  • 若有定义语句:int a=10;double b=3.14;则表达示'A'+a+b的值的类型是???
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved