结果是x=-1,y=-1,z=1。首先判断--a==b++,--a的值是0,b++的值也是0,显然成立。再往下a的值为0,b的值为1,从而z=1。此时执行--a,a的值变为-1赋给x,x=-1。y=a++:这句a的值先赋给y,y=-1,然后a后置加变为0。
#include
/**********************************************************
作者:niut
功能:
说明:
备注:如有高手,请指正。
日期:2012-6-8
**********************************************************/
int main()
{
int a=1;
int b=0;
int x, y, z;
int t =4;
x=(--a==b++)?--a:++b; //很显然,--a与b++是相等的,此时a =0.因此,前式化为:x=1?--a:++b,然后X为真故执行--a,a=-1.
y=a++; //a = -1,所以Y=-1,A++后,A=0;
z=b; //B已经++了,所以是1;
printf("%d,%d,%d\n",x,y,z);
return 0;
}
推荐回答结果是x=-1,y=-1,z=1。首先判断-a=b+,-a的值是0,b+的值也是0,显然成立。再往下a的值为0,b的值为1,从而z=1。此时执行-a,a的值变为-1赋给x,x=-1。y=a+:这句a的值先赋给y,y=-1,然后a后置加变为0。