执行以下程序段后,变量x,y,z的值分别为()。 int a=1,b=0, x, y, z; x=(--a==b++)?--a:++b; y=a++; z=b;

执行以下程序段后,变量x,y,z的值分别为()。
int a=1,b=0, x, y, z;
x=(--a==b++)?--a:++b;
y=a++;
z=b;

帮我具体分析一下,谢谢,特别是X的那句,在判断条件成立后,?後面的--a是在括号里的基础上再减还是在原来定义的a=1的基础上减..

结果是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。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-11
#include <stdio.h>
/**********************************************************
作者: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;

}本回答被提问者和网友采纳
第2个回答  2019-12-23
推荐回答结果是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。
相似回答