扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
返回值的意思是将函数实现的结果返回给调用者。
成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为吉安企业提供专业的成都做网站、成都网站制作,吉安网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
按标准来说,C的main函数是需要有返回值的。标准中main函数返回类型是int的,所以需要一个返回值。但是由于历史原因,很多地方可以看到没有返回值的main。
比如直接main()或者说void main() 但是这样一般编译器也不会认为错误,不过建议还是写标准的C的main函数,最好有一个返回值,0表示正常退出。
扩展资料:
常用库函数有:
scanf格式输入函数
printf格式输出函数
systemdos命令函数
sort排序
main主函数
fgets文件读取字符串函数
fputs文件写入字符串函数
程序代码: #include stdio.h #include string.h //包含memset函数 #include stdlib.h //包含double atof(const char *nptr); #define MAX_LEN 260 #ifndef _MSC_VER #define bool int #d
函数式宏(function-like macro)较之对象式宏可以进行更复杂的代换。
函数式宏 sqr 是在编译时展开并填入程序的,因此 只要是能用双目运算符 * 进行乘法计算的数据类型,都能使用函数式宏 。
函数定义则需为每个形参都定义各自的数据类型,返回值的类型也只能为一种。就这点而言,函数较为严格。
函数为我们默默无闻地进行了一些复杂处理,如:
而函数式宏所做的工作只是宏展开和填入程序,并不进行上述处理。
根据以上特征, 函数式宏或许能使程序的运行速度稍微提高一点,但是程序自身却有可能变得臃肿 。
函数式宏在使用上必须小心谨慎。例如, sqr(a++) 展开后 ((a++) * (a++)) 。每次展开, a 的值都会自增两次。在不经意间表达式被执行了两次,导致程序出现预料之外的结果,我们称这种情况为宏的 副作用(side effect) 。
注意两个【规则】:
一、不要省略返回值的类型。如果函数没有返回值,应生明为void类型。
二、函数名字与返回值类型在语义上不可冲突。
eg:char c;
c=getchar();
if(c==EOF)
..................
此处getchar()是一个函数,它的返回值类型却不是char,而是int类型。起函数原型是:
int getchar(void);由于c是char类型,取值范围是【-128,,127】,万一宏EOF的值在char的 取值范围之外,那么if语句将总是失败。
【建议】
不要将正常值和错误标志混在一起返回。建议正常值用输出参数获得,而错误标志用return语句返回。
两个【提示】:
一、有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。
例如字符串拷贝函数strcpy的原型:char *strcpy(char *strDest,const *strSrc);
strcpy 函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举。这样做并非多此一举,可以获得如下灵活性:
char str[20];
int length = strlen(strcpy(str,"hello world"));
但是注意不要将返回指针的函数作为左值,例如:
double* func(double* p)
{
return p;
}
double d = 100;
*func(d)=200;
二、如果函数的返回值是一个对象,有些场合用“返回引用”替换“返回对象值”,这样可以提高效率,而且还可以支持链式表达。而有些场合只能用“返回对象值”而不能用“返回引用”,否则会出错。
楼主顺便给你推荐两本书:高质量c/c++编程和c语言深度剖析。
scanf对流的操作遵从类型匹配操作原则
你这边输入“1-5”,scanf只匹配到“1”,就输出结果了
你可以试下,输入“100-5”“2-5”
你会发现,只都是“-”前面的
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流