mainint x 10,y 9 a(x

2020-11-24 05:05:35 字数 4260 阅读 8915

1楼:匿名用户

a=(x--==y++)?x--:y++是问号表达式,如果(x--==y++)为真,则a=后面的x--,否则a=y++

由符号运算法则可知(x--==y++)变为(10==9),false,但x变为9了,y变为10了,所以a=y=10,

x--,y++是先使用x,y值,再做自加自减,后面你搞了,不用太烦这个,不常用的

#include int main() { int x=10,y=9,a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; printf("a=

2楼:阿冬

--x //x变为9

--x==y //表达式结果为真,即为1y++ //y变为10

问号之前结果为真,执行--x,x变为8,所以a=8b等于x++执行之前的值,即b=8,然后x变为9c等于y,即c=10

main() { int x=4,y=3; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y;} } 为什么输出答案是2 2 4

3楼:也许的猫

根据运算符优先级,a=(--x==y++)?--x:++y等价于a=(((--x)==(y++)))?

(--x):++y,首先判断x=x-1与y值的是否相等,y+1,若相等,则a=--x(--x先x=x-1,然后用于计算)。此时,x=2,y=4。

a=2b=x++,将x的值赋给b,然后x=x+1,所以b=2,x=3.

c=y,所以c=4。

在写**的时候,最好将表达式中的不同优先级的计算用括号括起来,这样就不用为优先级问题而烦恼了。

4楼:匿名用户

是求abc吧?电脑上也说不清楚,自己多看书吧,很基础的,应该是符号的优先级问题

int x=10,y=9; int a,b,c; a=(--x==y++)?--x:++y; b=x++; c=y; cout<

5楼:

a=(--x==y++)?--x:++y;

先判断--x==y++是否为真,--x,将x的值减1,取其值,结果是9,y++先取y的值为9,然后其值加1,y=10

所以--x==y++ 为真,所以 a=--x=8b=x++; 先取x的值8,再将其值加1,所以b=8,x=9c=y=10

所以最后结果就是8 8 10

主是理解前增(前减)和后增(后减)区别,++x和x++的区别在于++x先把x的值加1,再取其值,而x++是先取其值,再把值加1

a?b:c的意思是a成立,则执行b,否则执行c希望能帮到你。。。

int x=10,y=9; int a; a=(--x==y++)?--x:--y; 求a 5

6楼:我才是淡淡

vc6下答案是8,不同编译器及运行环境可能会有差异。不过研究这个没有什么意义,你要是在公司实际开发写出这样的**,估计是直接滚蛋

5) 执行以下程序段后、变量a,b,c的值分别是一。 int x=10,y=9; int a,b,c; a =(- -x = = y++)?- -x:++y ; b

7楼:匿名用户

选:bint x = 10, y = 9;

int a, b, c;

a = (--x == y++) ? --x : ++y;

//x先进行 -- 运算,再进行比较

//y先进行比较,再进行 ++ 运算

//同: if(x == y)else

b = x++;

//x先进行赋值,再进行 ++ 运算

//同: b = x;x++;

c = y;

//因为在前面的 a = ( --x == y++), y 已经进行过 ++ 运算了,所以 y 的值已经成为 10 了

main() { int x=10,y=10,i; for (i=0;x>8;y=++i) printf("%d %d ",x--,y); } 答案是10 10 9 1

8楼:匿名用户

在循环语句for(表达式1;表达式2;表达式3)中,先执行表达式一,再执行表达式二,如果表达式二成立,就进入循环,第一次循环执行完后(本程序共两次循环),才执行表达式三(这是表达式三第一次被执行),然后再执行表达式二,看其是否成立,如果成立,就进行第二次循环。如此循环,表达式一只在第一次循环时执行,以后不再执行,表达式三在第一次循环不执行,以后的每次循环都执行。如果你要这是为什么,我只能说这是规定,别的就不知道了。

9楼:匿名用户

其实你的语句可以写成这样,就清楚了,一步步做下来。

main()}

10楼:匿名用户

for 循环是在运行完循环体里面的语言之后,再执行第二个分号里的内容

你的例子里面,首先执行printf("%d %d ",x--,y);,然后执行y=++i

以下程序的输出结果是 main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d ",x--,y)

11楼:匿名用户

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) // 此时x=9,i=1,y=1,

printf("%d,%d ",x--,y); // x=9,y=1输出9,1,结束后x=8.

第二次执行

for(i=0;x > 8;y=++i) //由于x=8,不满足条件所以退出循环。

12楼:毕戈夫斯基

我简单的分析下:

x,y 均初始化为10,

第一次循环, i=0; (x=10)>8; y=1 输出10, 1;

第二次循环,i=1; (x=9)>8; y=2; 输出9, 2;

第三次(x=8)>8 不成立, 退出;

此题考察你 ++ 运算符,

x++ : 先运算x, 再+1;

++x : 先+1, 再运算x;

-- 运算符同理;

(另外说一句, 以后提问最好给分, 一般没人会高兴回答的)

13楼:**ile未名湖

d、10 10 9 1 我补充一点 y出现过2次 y=10,y=++i 这是c函数变量作用域 外层**块的变量总是有效的,除非内层的**对该变量名进行了重新定义,如果内层**对外层**块中的变量名进行了重新定义,那么在此内层**块中,外层**块的变量就被隐藏

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)

14楼:百里莫步

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

15楼:匿名用户

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

已知x+y+2(-x-y+1)3(1-y-x)-4(y+x

1楼 原式 x y 2 x y 2 3 3 x y 4 x y 4设x y为b,则原式可变形为 b 2b 2 3 3b 4b 4 6b 5 b 5 6 即 x y 5 6 还可以把原式拆开来 x y 2x 2y 2 3 3y 3x 4y 4x 4移项 合并同类项得6x 6y 5 所以x y 5 6 ...

两正数x,y,满足x+y 1则(x+1 x)(y+

1楼 匿名用户 x 1 x y 1 y x 2 1 x y 2 1 y x 2 y 2 x 2 y 2 1 xy x y y x xy 1 xy xy 1 xy不能用均值定理 x y y x xy x y 2 xy 2 x y y x xy 2 1 x y 2 xy xy 1 4, 6 xy 6 2...

化简:(x+y2x+11 2y3x+12 3y

1楼 百度用户 原式 x 2x 3x 9x 1 11 2 1 2 3 1 8 9 y 45x 1 1 12 1 2 13 1 3 14 18 1 9 y 45x 179y, 当x 2,y 9时, 原式 45 2 179 9 107 化简 x y 2x 1 2y 3x 2 3y 4x 3 4y 9x ...