main( ) {int x=10,y=10;int a,b,c;a=--x==y?++y:--x;b=x++;c=y printf("%d %d %d\n"a,b,c)

请说一下详细过程 谢谢

main( )
{int x=10,y=10;
int a,b,c;
a=--x==y?++y:--x;
1)这里有四个运算符:=(赋值元素安抚)、--(自减运算符)、==(等于运算符)、?:(条件运算符),而由运算符的优先级从高到低有:--、==、?:、=。先计算--x后x=9,再计算等于运算符,等于运算符左右两边不相等,所以条件运算符第二个条件执行,即执行--x,然后x=8,也就是赋值运算符右边等于8,所以a=8,而且同时x=8,y=10;
b=x++;x++表示在使用x之后(即先将x的值赋给b),使x的值加1,所以此时b=8,x=9,y=10;
c=y ;将y的值赋给c,所以c=10,x=9,y=10;
printf("%d %d %d\n"a,b,c)
所以输出结果为8 8 10追问

b=8还是不太明白。。是因为=的优先级比++高?所以先赋值再加。。?x++我知道是先赋值再加可是最后的结果是 b额。。。

追答

不是那样理解的,自加运算符的使用。
对于i++(i--),和++i(--i)的不同之处在于:
i++,i-- (在使用i之前,先使i的值加(减)1)

比如
i=3;
j=i++;
(先将i的值3赋给j,j的值为3,然后i变为4)
再如:
i=3;

printf("%d",i++);
先输出3,然后i的值再变为4;

i=3;
j=++i;
(先将i的值变为4,再赋给j,j的值为4)
再如:
i=3;
printf("%d",++i);
i的值先变为4,然后输出4;

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-13
a=--x==y?++y:--x; 这个首先x-1,然后与y比较是否相等,如果相等,y+1,如不等,x-1,最后将结果赋值给a,此时结果,a=8,x=8,y=10
b=x++; 先将x的赋值给b,然后x-1,此时 b=8,x=9

main( ) {int x=10,y=10;int a,b,c;a=--x==y?++y:--x;b=x++;c=y pr...
b=x++;x++表示在使用x之后(即先将x的值赋给b),使x的值加1,所以此时b=8,x=9,y=10;c=y ;将y的值赋给c,所以c=10,x=9,y=10;printf("%d %d %d\\n"a,b,c)所以输出结果为8 8 10

main() { int x=10; int y=x++; printf("%d,%d\\n",(x++,y),y++); }...
在主函数main中,定义一个整形的x并赋初值为10,在定义一个整形y,并赋初值为x++(因为x++是先运算后自加,所以y=10,此时x=11),后面就是输出整形了。(x++,y)是逗号运算,取最后一个表达式的值为最终结果,y++前面已说过了。

...main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d...
D、10 10 9 1 第一次执行 for(i=0;x > 8;y=++i) \/\/ 此时x = 10, 这句y=++i要循环体执行完后执行,即执行完printf后,在执行到for时。printf("%d,%d ",x--,y); \/\/ 先输出后计算,所以输出10,10,之后x执行减一,x=9.第二次执行 for(i=0;x > 8;y=++i)...

...main() { int x=010, y=10; printf("%d,%d\\n", ++x, y--); }...
则 y=++x; 的意思是 先x=x+1; (此后x的值为3,y的值为0,)后 y=x; (此后x的值为3,y的值为3)(二)已知 x 的值为 2, y 的值为0 则 y=x++; 的意思是 先 y=x; (此后x的值为2,y的值为2)后 x=x+1; (此后x的值为3,y的值为2)...

int main() {int x=10; int y=x++; printf("%d,%d\\n",(x++,y),y++...
(x++, y)它是一个逗号表达式,整个表达式的结果是最后一个表达式即y的值。

...main(){ int x=10;int y=x++;printf("%d,%d",(++y,y--),++y);}...
简单啊,y=x++这一句话就实现了x=11然后才把结果给y,所以y也是11了,后面这个输出函数最后那里是先运行++y然后才运行前面那个()里面的东西,就是12了,别看输出的是12.12但是内存中变量x的真实值还是11哦。希望采纳

...Main( ) { int x=10,y=10; printf(“%d,%d,%d,%d\\n”,x--,x...
10 10 9 10 x--,x,--y,y这四个参数对于printf来说是同时调用的,不存在先后关系 x-- 是先调用x,然后再做减法 就是10 x 的值就是10 --y 是先做减法 再调用 就是9 y 的值就是10

C程序main() {int x=10,y=10,i; for(i=0;x>8;y=++i) printf("%d %d...
首先小错误intx=10;int类型和变量名不能连起来写。其次printf("%d,%d",x--,y);别忘了双引号 得到的答案为:10,109,1

...main () { int x=10,y=10,i; for (i=0;x>8;y=++i) printf ("%d%d...
应该是10 10 9 1吧 先判断x>8成立 执行循环 输出 x,y的值此时x,y都为初始值10 所以输出10 10,执行一次循环后 执行语句y=++i;此时,y变为1;而x执行过x--后变为9 所以输出9 1

...x=10; int y=x++; printf("%d,%d",(x++,y),y++); 则上面程序的输出结...
你选的是对的,答案就是C,当执行到y=x++时,因为y=x++是先运算后自加,所以y的值是10,此时x值后加变成了11,当执行printf()函数时,因为printf()函数运算是从最后运算的,所以首先运算的是y++,因为y++还是后加加,所以y的值还是10,在运算y,所以第二个输出的结果还是10,因为题中的...

相似回答
大家正在搜