若有以下程序段:int a=0,b=0,c=0c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%dn”,a,b,c);

若有以下程序段:int a=0,b=0,c=0c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%dn”,a,b,c);,第1张

大哥题都不对。

int a=0,b=0,c=0;

c=(a-=a-5),尺宽(a=b,b+3);

printf(“%d,%d,%d\n”,a,b,c);

按程序运行来讲吧。

第一句不说了...

第二句为逗号表达式。

c=(a-=a-5)

给c赋值笑衫,把a-=a-5的结果赋给c;

(a-=a-5)=(a=a-(a-5))

把a=0代入得a=5

进而(a-=a-5)的值为5;

c=5;

接下来执行(碰困腔a=b,b+3);

这里面又有逗号表达式。

a=b因b=0;故a=0;

b+3;不对任何变量赋值,相当于空语句;

综上所述:a=0b=0c=5.

论述完毕.....................

当然应该得2了

前面不用去管,n初始值为2,执行(m=a>b)&&++n是有说法的,首先a>b的结果是false,m的内容是0,括号中的运算结果是false,而紧跟的是逻辑与,前面已经是false了,那么不管宏贺后面是什么结果都是false,所以后面的内容实际是不运行的,所以n的值升绝铅没有变,仍然是2;

如果改为(m=a<b)&&++n那结果就不一样了,括号内的值为true,逻辑与的结果要吵好看后面的值才能确定,所以后面部分一定要运行,这样n的值就变为3了;逻辑运算结果是true。

这样的,p是个指针,p=&a[3],就是说p指向了数组第四个元素的地址(3的地址)。这时把p看做数组首地址来取元素的时候,比如p[2],那梁耐么就是以p为首地址的第三个元素,橡尘春即(5)。而5呢,在原数组中是第6个元素。所以你在看兄耐解释就懂了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8274121.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存