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

C语言 42.下列程序的运行结果是( ) void fun(int *a,int *b) {int *...
函数 fun(int* a,int* b)的两个参数类型都是int*型.也就是说,参数变量a, b本身的值不会变.当传入两个实参int* x , int* y后.尽管fun里面作了交换操作,这种交换不会影响到原来的x,y变量值.要象这样定义FUN函数,才有意义.void fun(int *a,int *b){int k;�k=*a;*a=*b...

C语言,以下程序的运行结果是?
define sw(x,y) {x^=y;y^=x;x^=y;} 这个宏的作用就是在不借助第三变量的情况下,交换x和y的值,^是位异或运算符,x^=y相当于x=x^y,具体什么是位异或运算,可以在网上轻意找到相关教材。b=01代表8进制数的1,1在任何进制计数系统中都相等。

C语言,以下程序运行的结果是什么,麻烦详细解释一下
int main(){ union b { int k;char c[2];}a;a.k=-7;printf("%d,%d\\n",a.c[0],a.c[1]);return 0;} 解释 :联合体共用存储空间。int型占4个字节,char型占一个字节,因此a的内存分布如下图 整型数-7的十六进制表示为0xfffffff9 char[0] = 0xf9 \/\/转为十进制-7 char[1]...

下面程序段的运行结果是( )。 char *p="abcdefgh"; p+=3; printf("%d...
将ABCD赋值个p,他们之间是怎么赋值的呢,让p指针指向“A”的地址,如果取值的话就*P拿到A了。这个函数返回的值是目标串的地址,也就是p啦,那么p是个指针怎么算地址的长度呢,其实就是strlen("ABCD")啦,为什么,计算机知道的啦,因为p指向了“ABCD”首地址了,而c语言中默认在ABCD后加个结束符的...

C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...

请问,下面程序的运行结果是( ).#include <stdio.h> main() { int a...
初始化a = 1,b =10;do是先执行,所以a = 2 ,b = 9;while(b--<0),因为是后置--,所以先判断b<0,为假,所以退出循环。b再自减,b=8 所以 a=2,b=8

【求助c语言】下面程序段的运行结果是()
正确输出为cde,没有正确选项。s代表字符串第一个字符,S+=2就是向后移2,即c 输出s 则应为cde。

C语言:分析下面程序的运行结果
由于逻辑运算2&&3结果为1,故条件为真,程序执行a=1语句;最终输出为1 2、输出为:7 运行switch(1)时,将执行case(1)语句,并接着往下执行直至遇到break,或者整个switch语句结束 所以最终b=1+1+2+3=7 3、输出为:5 实际上for循环中 i 有两次自加运算,故步长为2,;即当 i 增加2时,...

c语言,以下程序运行后的输出结果是
a+=a-=5)是一个表达式,(a=b,b+3)是另一个表达式。a=0,a=a-5=-5,a=a+a=(-5)+(-5)=-10,将值赋给c,c=-10,此时,a=-5 a=b,将b的值赋给a,a=0,执行b+3=0+3=3,这个3不对任何变量赋值。因此最终结果a=0,b=0,c=-10 输出a、b、c的值,输出0,0,-10 ...

C语言,以下程序运行后的输出结果为__
开始时,len为0,offset=3,offset不为0,先输出p+offset-1上的元素,即*(p+2),为g,并len++,再调用print(str)。之后,每次递归,len静态变量保存了上一次的值。实际上,len每加一,offset就随之向左偏移一位,指向前面的一个字符,也就是倒过来输出字符串中的每个字符。直到len=strlen(str)...

相似回答