正确的程序应该是
#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的值。
温馨提示:答案为网友推荐,仅供参考