C语言 比较两个数的大小 #include<stdio.h> main() { int a,b,c; if(a>b,c=a); else c=b;

scanf("%d%d",&a,&b);
printf("%d",c);
}
这段程序有什么问题,为什么输出的都是a的值

正确的程序应该是
#include<stdio.h>
void main()
{int a,b,c;
scanf("%d%d",&a,&b);
if(a>b) c=a; else c=b;
printf("%d",c);
}
问题出在这里:if(a>b,c=a); else c=b;
(a>b,c=a)是一个逗号表达式,表达式的值是c=a的值,如果a为非零值,经过c=a这个表达式之后,c=a的值就变成一个非零值,这样就执行if后面的语句。因为if后面是一个分号,所以什么也不执行,c的值还为a的值,所以输出a的值。
如果a是一个零值,则经过a>b,c=a这个逗号表达式之后,表达式的值是c=a的值。由于a为零值,所以(a>b,c=a)这个逗号表达式值就是c=a的值,也就是零值。这样就不执行if后面的语句,执行else后面的语句。这样c的值就变成b的值。
如果a取0,则输出b的值;如果a取非0值,则什么也不做,a还为c的值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-07
你的代码。。。。。
if(a>b,c=a);
else c=b;
这不出问题才怪了本回答被网友采纳
第2个回答  2012-09-07
把你的代码显示清楚吧- -
第3个回答  2012-09-07
if(a>b) c=a;

else c=b;