nnpc.net
当前位置:首页 >> 已知:int A[]={1,2,3,4}, y, *p=A;则执行语句y =... >>

已知:int A[]={1,2,3,4}, y, *p=A;则执行语句y =...

B正确,选B。++p使p指向了2,*++p就是a[1],(*++p)--就是a[1]--。变量y的值是2,y=a[1]--;是把a[1]的值赋给y后才对a[1]作减一运算。

这个是一个算符先后顺序问题 先说题目:++p表示指针往后加1 , 这时y=2,而--是在赋值以后执行的,所以y=2,而a[]={1,1,3,4}; 再说x=i++,同样的道理,先赋值,再自增,因此x=1; i=2;

//看下这个程序你就知道是怎么回事了. #include #include void main() { int b[]={1,2,3,4},x,y,*p=b; y=*(p++);/*后缀自增的操作,赋的值是未自增的*/ x=*p;/*这里的P已经自增了.*/ printf("%x\t%x\t\n%x\t%x\t\n",b,y,p,x); getch(); return; }

int a=2,b=1,*p=&a; *p=3;//因为指针指向a,所以此时相当于a=3 a=a+b;//a=3+1 所以a=4

&a[0]相当与a,即p指向数组的首地址,也就是a.*p=&a[0]p=a; *p++;++和*号都是右结合顺序的,因此相当与取出p所指向的数后p自增1;所以a[0]不变; *p+=1*p=*p+1;此时p指向的是a[1];所以相当于a[1]=a[1]+1;所以a[1]=12,a[13]没操作.所以还是12,素以因该...

*p++等效于*(p++),是 先引用后自增,p原先指向b[0],所以y的值为b[0],y=1;p后加1,p指向b[1] 另外b[0]值还是1没变

C *p=a 说明p指在字符a所在的地址,*(p+4)就指向了d后面那个字符 而c语言字符风格是 字符串最后自动附加一个'\0'

选B 解释: w>x不成立,所以a=0,那么&&运算符的左值(a=w>x)整体为False; 因为&&的短路效果,就是左值为False,则不计算右侧表达式; 所以b还是为最初赋值的6 综上:a=0,b=6

if条件只影响z=x语句;不成立则不执行z=x语句,所以z=3,保留原值。程序会继续执行x=y;y=z改变赋值,x=2,y=3.

c的值没有变,还是3。 先判断a>b,结果是逻辑假,”逻辑假 && 其他表达式“的时候,因为前面已经是假,后面无论是什么结果,总的表达式也都是假,就不会再去执行”其他表达式“,所以++c没有执行,c还是3。

网站首页 | 网站地图
All rights reserved Powered by www.nnpc.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com