大哥题都不对。
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=0;b=0;c=5.
论述完毕.....................
……
首先
a=0,b=0,c=0;
接下来
c=(a-=a-5);
这句很恶心……分开看
a-=a-5;
转换为 a=a-(a-5);
=a-a+5
=5
结果变成了 a=5;
整体就成了 c=(a=5);
此时 a=5,b=0,c=5;
然后是 a=b;
因为b=0,
所以此时 a=b=0;
接下来 b+3;
等同于写了个 0+3 ;
这句没有给b赋值,b还是0,
可以说这句完全没有意义!!
(如果写成 b+=3,或者b=b+3,或者b=3;的话,
b就是3了……可惜这段程序没这样写……b还是0)
所以最后 a=b=0 ,c=5;