你看见的这个程序应该这么看:
void main()
{int a=3,b=4,c=5,t=79;
if(b<a&&a<c)t=a;
a=c;
c=t;
if(a<c&&b<c)t=b;
b=a;
a=t;
printf("%d %d %d\n",a,b,c);
}
C语言语句的结束符不是换行 而是分号“;” 并且if语句如果后面没有{}括起来的代码块 只把条件语句后紧跟着的一个语句(第一个分号前)作为表达式成立时执行的语句,比如:
if(a<c&&b<c)t=b;b=a;a=t;
这句在(a<c&&b<c)成立的时候只执行t=b; 然后顺序执行后面的b=a;和a=t;
如果不成立t=b;不执行,但仍然执行后面的b=a;和a=t;。
所以整个语句看来就是:
题设:a=3 b=4 c=5 t=79
if(b<a&&a<c)t=a;a=c;c=t; b大于a 所以表达式不成立则t=a;不执行 执行a=c=5,c=t=79
if(a<c&&b<c)t=b;b=a;a=t; 此时a=5,c=79,b=4所以a小于c并且b小于c,表达式成立则t=b=4,b=a=5,a=t=4。得出a=4 b=5 c=79
printf("%d %d %d\n",a,b,c);所以最终屏幕输出:4 5 79。
参考资料:手打