执行以下程序段后,变量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。

...int a=1,b=0, x, y, z; x=(--a==b++)?--a:++b; y=a++; z=b;_百度...
结果是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。

...执行下面的程序段后,输出的结果是( )a=1 b=3 a=a+b b=a-b PRIN...
模拟程序的运行结果执行完a=1 后:a=1执行完a=1 b=3 后:a=1,b=3执行完a=1 b=3 a=a+b 后:a=4,b=3执行完a=1 b=3 a=a+b b=a-b后:a=4,b=1故输出结果为4,1.故选B.

执行下面程序段后,2值为( )。 int x=1,y=2,z=3; z=z (float)(x y);
【答案】:A 本题考查Java的运算和类型转换。题目中变量X、y、z是int类型,由于括号的优先级要高,所以语句(float)(x\/y)的结果为0.0,分母已经成为0,编译肯定无法通过。另外,由于z是int型,不能将float型强制转化为int型。

执行以下程序段后,变量a,b,c的值分别是
int x = 10, y = 9;\/\/ 声明变量x = 10, y = 9;int a, b, c;\/\/ 声明变量a, b, ca = (--x == y++) ? --x : ++y;\/\/ if (--x == y++)\/\/ --x;\/\/ else\/\/ ++y;b = x++;\/\/ 给b赋值为x++c = y;\/\/ 给c赋值为y分析:x = 10y = 9a = 如果 (-...

计算机执行下面的程序段后,输出的结果是( ) a=1 b=3 a=a+b b=...
B 把1赋给变量a,把3赋给变量b,把1+3的值赋给变量a,4-3的值赋给变量b,最后输出a,b,此时a=4,b=1 故选B

下列程序段运行后,x的值是( ) ​a=1;b=2;x=0; ​if(!(--a)) x-
结果是x是 0 选A --a的结果是0.!0的结果是1,,所以第一个if满足条件,x--; 此时x为-1 !b的结果是0,所以第二个if不满足条件,执行else ++x所以x为0

执行以下的程序段后,a= ,b= 。 int x
先判断x==y++ 先取值 再自加. 于是是判断 3==2 不成立. y自加为3.执行后面一个y++; 先取值, 表达式值是3. y自加为4.b=x++;先取值, b=3, x自加为4.于是 a=3, b=3

...{ int a = 1,b = 2; printf ("%d\\n",a=a+); }
1.a= b+ c 所以表达式值为非零,为真,执行printf ("###\\n");2.自增运算符后缀,所以先引用,后自增,m为2,m>2为假,然后m自增一值为3,执行else部分,m+2=5 7.注意是x=2 ,是=,赋值号,也就是x被赋值为2,表达式非零,为真执行y= y+2;8.i为10,所以到case 10部分i+=1;i值为11...

c语言运行以下程序段后变量a的值是:( ) int a=0, b=3;
a+b=3,a++先判断在自增,判断为0,自增后为1,因为判断为0,所以逻辑短路,后面的也就不判断了 switch里面是0,所以case 0执行成功,也就是说从case 0后面的语句都要执行,知道遇到break a++;case 1:b++;case 2:a+=b;也就是这些都有执行 所以是6 选D 不懂再问懂请采纳 ...

...若有定义:int a=1,b=2,c=3;则执行以下程序段后a,b,c的值分别为...
第一步c=a;这里c的值就被赋值为1了,所以第三步的b=c;,b被赋值的是1

相似回答