static int a=4,b=5,t;
if (a>b)
t=a;a=b;b=t;
printf ("%d,%d\n",a,b);
计算出来的结果为何为5,0?
我的思想:if(a>b)不成立执行printf ("%d,%d\n",a,b)那么结果应该是4,5
static int a=4,b=5,t; if (a>b) { t=a;a=b;b=t;} /*要得到你想要的结果,可以在上面三条语句两边加大括号*/ printf ("%d,%d\n",a,b);
以上的程序和按你说的分析思想,我想你是想得到的结果是a=4,b=5是吧? if语句在判断条件成立后,会执行后面的一条策略语句(大括号括起来的语句被当做是一条语句),您的程序中的if语句显然是条件不成立,所以执行t=a;这条语句,而a=b;以及其下的语句都不管if语句成立与否都会被执行的。 如果按照你的原意,应该在t=a;a=b;b=t;这三条语句两边各加一个配对的大括号,才能到到你想要的结果。
是不是很简单,也是疏忽所至。
哈哈,不是说你灌水啦,问问题我们大家都是很欢迎的,毕竟这代表着你准备又要进步了嘛。我说的是我又在灌水啦,什么都没打,就打了个agree~~~~
main() { static int a=4,b=5,t=1; if (a>b) t=a; a=b; b=t; printf ("%d,%d\n",a,b); }
给你一个提示,这个是你的错误的程序,如果我把 t 赋个初值 1 给它,你想想结果会是什么,然后你就会明白了。如果还不明白,继续问咯~
问题扩展: 如果我把static去掉,再次运行程序,将会得到什么?还和上面的结果一样吗? static定义变量后,如果变量没有赋初值,那系统将会赋给它一个怎么样的初值?
呵呵,这些问题扩展自己去思考吧~
[此贴子已经被作者于2004-07-26 09:26:16编辑过]