lol兽人吧狮子狗x纳尔:下面的c语言程序为什么结果为,,,2 5.这个5是怎么回事呢?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 03:25:43
main()
{
int a=2,b=5,x=7;
x=rrr(a,b);
printf("\t%d",x);
}
int rrr(int c,int d)
{
printf("\n,,,%d",c);
return;
}

原因是在C语言中printf函数是有返回值的,在这个程序中即使rrr函数没有传入int d,结果也是一样的,因为C语言会默认把缓冲中的结果返回回去。

用int a;a=printf("\n,,,%d",c);就会发现a的值是5,所以函数返回值为5,跟传入的d没有关系。

至于printf的返回值我想应该是输出的字符个数。

先执行主函数
再调用rrr()再输出,,,2
执行return,返回b=5,x=5
再执行printf("\t%d",x);
就是输出 的结果

你在 rrr()函数中的return中没有明确指出返回什么值,所以系统默认返回了没有用过的变量d.
所以
x=rrr(a,b)使得x为 b的值了。
所以出现了那个结果。

我试了一下,发现rrr()的返回值是前面输出字符的个数,"\n" "," "," "," "%d" 共五个,如果加上一个逗号,输出的就是“,,,2 6"了。
至于为什么俺就不清楚了。请教高人吧。

你先调用了函数rrr(2,5),输出了...2,然后给x赋了一个不可预料的值5。
后来调用printf("\t%d",x),输出了5