void main() {int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\n",d); else if((c-1>=d)==1) printf("%d\n",d

void main()
{int a=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
else if((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2);
}
输出后的结果为?求详细解
答案是3

第一个IF 里面 判断 A>B>C

她不是一块判断的 而是从左到右进行判断

先判断A>B 因为成立 所以A>B是正确的 所以A>B的值为 1 (1表示TRUE,0表示FALSE) 然后 就变成 1和C比较了 当然1小于C 所以第一个IF 不满足

满足第二个IF 所以就输出2+1 =3 了
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-20
这段程序可以运行,但是会有警告的,答案为3
void main()
{int a=5,b=4,c=3,d=2;
if(a>b>c) //会变成1>3,不满足条件
printf("%d\n",d);
else if((c-1>=d)==1) //会变成2>=2,结果是true,然后和1比较的话,相等
printf("%d\n",d+1); //所以会打印2+1=3
else //不会走到这个分支
printf("%d\n",d+2);
}
第2个回答  2010-08-20
满足第一个if,所以就输出2

int a=5,b=4,c=3,d=2;if(a>b>c) printf("%d",d);else if((c-1>=d...
程序输出3 >是从左往右结合;所以a>b返回1,然后1>c返回0,即false,所以判断((c-1>=d)==1), 由于减号优先级高于>=;所以先计算c-1,返回2 2>=d返回1,1==1结果是true,所以输出d+1=3.

...main() {int a=5,b=4,c=3,d=2; if(a>b>c) printf("%d\\n",d); el...
先判断A>B 因为成立 所以A>B是正确的 所以A>B的值为 1 (1表示TRUE,0表示FALSE) 然后 就变成 1和C比较了 当然1小于C 所以第一个IF 不满足 满足第二个IF 所以就输出2+1 =3 了

...h> void main() { int a=5,b=4,c=3,d; d=(a>b>c); printf("%d\\n...
a>b>c \/\/a>b成立 =ture>c \/\/ture当成1比较,1>c不成立 =false \/\/false转换为整形就是0 =0

a>b>c不是满足条件吗,那不应该直接输出结果吗?
在这里,int a = 5, b = 4, c = 3, d = 2;if ( a > b > c ) printf( "%d\\n", d );的计算过程是这样的:先判断是否a > b ,判断结果为“真”,也就是1 再判断是否(a>b)>c,即是否1>c,因为1>3不成立,所以,printf( "%d\\n", d );就不被执行。

...void main() { int a=1,b=3,c=5,d=4,x=3; if(a<b) if(c>d) x=1...
这个就是先判断a<b成立执行判断c>d成立,就执行x=1,所以最后输出1

C语言 若 int a=4,b=5,c=6,d=7,m=1,n=1,e; 则执行语句 e=(m=a>b...
(m=a>b)&&(n=c>d)当执行完m=a>b之后,返回的值是0,也就是false,就不去执行&&后面的表达式,只有m的值发生了改变n的值不变,所以是m=0.n=1。代码:include "stdio.h"void main(){ int a=5,b=4,c=6,d;d=a>b?(a>c?a:c):b;printf("d的值为%d",d);} ...

a=5b=4c=3按从小到大的顺序输出的c语言
include <stdio.h>void swap(int *a,int *b) {int t = *a;*a = *b;*b = t;}int main() {int a,b,c;printf("输入一个三个整数(q 结束):");while(scanf("%d%d%d",&a,&b,&c) == 3) {if(a > b) swap(&a,&b);if(a > c) swap(&a,&c);if(b > c) swap(...

void main() {int a=3,b=4,c=5,t=99; if(a<c&&b<c)t=b;b=a;a=t; p...
如果a<c且b<c,则将b的值赋值给t,将a的值赋值给b,将t(已经是4)的值赋值给a,最后结果是输出abc,运行结果是4 3 5

已知int a=5,b=4,c=6,d;,执行语句d=a>b?(a>c?a:c):b后,d的值为...
6 首先运行的肯定是括号里的 a>c?a:c 如果a大于c的话 结果为 a,反之则为c, 所以结果是c 然后运行的是 a>b?c:b;同上 所以结果为6

...void main() {int a=1,b=2,c=3; if(c=a) printf("%d\\n",c); 答案...
注意看这句 if(c=a)括号里面只有一个等号,所以是一个赋值表达式,也就是把a的值赋给c,表达式的结果就是所赋的值1,表达式的值非零为真,继续执行,输出c的值,由于c已经被赋为1了,所以输出结果为1。注意 c=a 和 c==a 是不一样的,前者是赋值,后者才是比较相等。

相似回答