C语言程序执行问题

#include<stdio.h>
void f(int y,int *x)
{y=y+*x,*x=*x+y;}
main()
{
int x=2,y=4;
f(y,&x);
printf("%d %d\n",x,y);
}

请解释一下此程序的执行过程?
此程序的执行结果是8,4 请详细解释其执行的过程,如何得到8,4的???

不是定义了函数f吗?这时候参数y和x传递给函数,执行{y=y+*x,*x=*x+y;},其中涉及逗号运算,先解释一下:

逗号运算符。用它将两个表达式连接起来。如
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。如,逗号表达式
a=3*5,a*4

赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如
(a=3*5,a*4),a+5
逗号表达式的一般形式可以扩展为
表达式1,表达式2,表达式3,…,表达式n
它的值为表达式n的值。
从附录B可知,逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:

① x=(a=3,6*3)
② x=a=3,6*a
其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中,详见第3章。
在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如
cout<<(3*5,43-6*5,67/3)<<endl;

所以,你的程序运行结果y的值不变,x的最后的值即表达式最后的值为8,用printf("%d %d\n",x,y);输出就不用我讲了吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-29
看程序的执行顺序,只需要看main函数即可。
int x=2,y=4;//定义变量
f(y,&x);//调用f函数,执行f里面的操作y=y+*x ,那么 y=4+2=6
*x=*x+y; x=8
最后输出 8,4.
注意一个问题:y是一个局部变量,所以你在f函数里面改变y的值只在f函数有意义,出了f函数之后,y的作用域就没有了。所以最后输出的y依然是4,如果要改变y的值(即让y等于6),可以用整数的地址作为参数.这就是值作为参数和地址作为参数的区别。本回答被提问者采纳
第2个回答  2010-07-29
#include<stdio.h>
void f(int y,int *x)
{3} {y=y+*x,*x=*x+y;}
main()
{
{1} int x=2,y=4;
{2} f(y,&x);
{4} printf("%d %d\n",x,y);
}

我的c语言程序没有报错为什么会执行不了?
在C语言中,程序没有报错并不意味着程序一定是正确的。有时候,程序可能会出现逻辑错误或者运行时错误,导致程序无法执行或者输出不符合预期。以下是一些常见的导致程序无法执行的原因:1. 程序陷入死循环:程序在某个地方出现了死循环,使得程序无法继续向下执行。如果程序似乎无法结束,可以检查程序是否存在...

为什么C语言编写的程序运行时闪一下就没了?
当C语言编写的程序运行时突然消失,通常源于设置上的问题。要解决这个问题,可以参考以下步骤:首先,从最基础的HELLO WORLD程序开始。当你编写并编译完成这个程序后,正常运行时,程序会在屏幕上显示“Hello World”,只有在用户按下任意键后才会关闭窗口。然而,当你直接双击执行生成的EXE文件时,可能会出...

为什么c语言代码正确但运行不了
c语言代码正确但运行不了只能说明语法上没有出现问题,而执行不了,有可能是你的逻辑有问题。建议详细检查代码,确证语法、逻辑都没有错误后,再编译执行。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了...

C语言的运行出现不了的问题是什么问题??
环境问题:代码在不同的操作系统、编译器或硬件平台上可能存在差异,导致代码无法正常运行。可以检查编译器和操作系统的兼容性,或在特定的环境中运行代码。逻辑问题:代码逻辑存在问题,导致代码无法正确执行。可以检查代码逻辑是否正确,是否存在死循环、递归深度过大等问题。综上,C语言代码运行不出现象可能...

c语言运行闪退怎么解决
解决C语言程序运行闪退问题,只需在代码结束前加入特定函数即可。通常在return 0;之前,代码段末尾加上getch();或getchar();,这将使程序暂停,等待用户输入,确保程序执行完毕。使用getch();较为推荐,因为它允许用户通过任意键退出。而getchar();则要求用户输入多个字符后按回车键结束。在程序中加入头...

c语言执行顺序
C语言是一种编程语言,它的执行顺序是非常重要的。在C语言中,程序的执行顺序是从上到下、从左到右的。也就是说,程序中的条语句会首先被执行,然后是第二条语句,以此类推,直到程序结束。C语言中的语句可以分为两类控制语句和非控制语句。控制语句用于控制程序的执行流程,而非控制语句则用于执行...

c语言程序是怎么执行的??
F( T )C语言程序是从源文件的第一条语句开始执行的。\/\/C语言程序是从主函数中的第一条语句开始执行的 2. F( T )C语言对其数据在内存中所占用的实际字节数是有明确规定的。\/\/C语言对其数据在内存中所占用的实际字节数没有明确规定,比如:整型数据在turbo C中占2字节,在VC中占4字节 3...

c语言写出来的exe文件运行黑屏?
使用 C 语言编写程序并生成可执行的 `.exe` 文件,如果运行时出现黑屏,可能是由几个不同的原因造成的。以下是一些可能导致这种情况的原因以及相应的解决方法:1. 窗口最小化:有时程序可能创建了一个窗口,但该窗口被最小化到了任务栏,因此看起来像是黑屏。检查任务栏是否有程序图标,点击它可以...

C语言编写程序后,为什么执行时自动关闭?
第二个是除数为0当然还有其他的。常见的原因因为程序没有设置暂停,运行完了之后,就自动关闭。可以在程序最后加上getchar();或者 system(pause)。实现程序暂停的效果。pause是cmd中的一个命令,通过system函数调用执行。这样程序会在执行这个之后结束,换句话说就是按任意键退出,而不会直接退出。

C语言程序运行错误
其实这些问题通过调试都能找出来,你需要一些调试技巧。断点分析到while不起作用了,就应该主动从逻辑上分析为什么,而不是问程序为什么,程序是按你的指令在执行的,不会有问题。希望能对你有所启发,祝你学习愉快。附参考修改如下:void main(){ float a,b;char c;do { printf("\\nqing shu ru ...

相似回答
大家正在搜