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
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 ...