C语言以下程序的运行结果是

以下程序的运行结果是
int x1 = 30, x2 = 40;
void sub(int x, int y)
{
x1 = x;
x = y;
y = x1;
}
main()
{
int x3 = 10, x4 = 20;
sub(x3, x4);
sub(x2, x1);
printf("%d,%d,%d,%d", x3, x4, x1, x2);
}

函数sub中的引入参数是是形式参考,比方说第一个sub(x3, x4);
函数最先执行的语句是:int x = x3, int y = x4;//把x3跟x4的值赋给x跟y
所以函数里面改变的是x跟y的值,而x跟y在函数结束后就被清除了,所以受改变的只有全局变量x1,第一次执行sub的时候,
x = x3;
x1 = x;//x1==10;
同理,第二次的时候x1的值就等于x2了,所以x1最终值为40,其他值不变,输出结果是:
10, 20, 40, 40
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-16
10,20,40,40

x3全局变量在main重新赋值,x1在第二次sub被赋值40,x2全局40,x4局部20本回答被提问者采纳
第2个回答  2018-05-16
10,20,40,40
第3个回答  2018-05-16
10,20,40,40
相似回答