量子点电视什么意思:一道简单的c编程题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 22:09:21
#include<stdio.h>
void fun(int x,int y)
{
printf("%d%d\n",x,y);
}
main()
{
int a=3;
fun(a,a++);
getch();
}
为什么结果是43 而不是33 或34
呵呵 我已经知道答案了
逗号运算符号是 从左到右的
应该 是 : 实参向形参的传递实从右往左的
为什么c#里是33 ? c语言参数传递是从右往左的
这与其他语言不同~~~

#include<stdio.h>
void fun(int x,int y)
{
printf("%d%d\n",x,y);
}
main()
{
int a=3;
fun(a,a++);
getch();
}
fun(a,a++) ,这个函数有两个实参数,一个是a,一个是a++,它是先算a++,由于a++是先使用a的值,运算a++之后,a的值是4啦.,这就造成了fun(4,3)再传值给形参,也就是形参x=4,y=3,最后打印出43.

主程序中的fun语句中有一个,逗号运算符。

逗号运算符的特点是,从后往前算,先算后面的a++,然后才是前面的a,而这个时候a已经是4。

所以fun中,因为(a++)的自加值仍然是3,而a的值已经是4
。最后得出43

fun(a,a++);
右结合 a++先用a是3,然后a自增a=a+1=4,传入函数

有意思,我在C#里试了一下,结果是33。

主程序中的fun语句中有一个,逗号运算符。

逗号运算符的特点是,从后往前算,先算后面的a++,然后才是前面的a,而这个时候a已经是4。

所以fun中,因为(a++)的自加值仍然是3,而a的值已经是4
。最后得出43

正解,呵呵

在WIN-TC里是43,但在VC6.0里是33
迷惑ING