C语言函数问题?

来源:百度知道 编辑:UC知道 时间:2024/06/01 19:42:38
#include<stdio.h>
dis()
{
printf("**********");
}
void main()
{
int a;
a=dis();
printf("\n%d\n",a);

}
为什么输出的是 ********* 10

因为printf打印输出了10个字符
它又作为dis()函数的返回值,赋值给了a

dis()并没有返回值,换句话说就是你的变量a没有正确的值!

如果真的希望返回打印的字符数,可以将printf的返回值返回。

#include<stdio.h>
int dis()
{
return printf( "**********" );
}
void main()
{
int a;
a = dis();
printf( "\n共打印了%d个字符\n",a );

}

类似于
dis()
{
printf("**********");
}
这样的函数定义是不标准的,因为某些编译器比如VC6,会默认其返回值为int型。但这不是一个标准的做法,应当显式的指明返回值类型,如果不需要返回值,请指明为void。

高金山 - 经理 五级 4-22 13:46

说得对。你打印出十个字符了,所以输出的是10.

至于为什么是10个字符:9个*号再加上字符串结束符'\0',就是10个字符,明白了吗?

为什么这样编译还能通过???
dis()没有返回值啊,直接用a=dis()
为什么能得到值???