C语言:当函数定义时遗漏函数返回值类型以及函数遗漏return语句

相关阅读

C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm=1001.2014.3001.5482


函数定义时需要明确给出返回值的类型,比如int main();表示主函数返回一个整数值,void func();表示func函数不返回值(但会函数也会返回,这是需要区分的)。

void main();这种写法已经被普遍认为是不专业的,在C99标准中,规定main函数的返回值必须显式说明为int。而在C90标准中,可以如果不显式说明函数返回值,int类型为默认返回值类型,这是因为当时的函数大多数返回int类型。

复制代码
void main();  //这是不专业的写法,即使在C90里面没有强制规定返回值类型
int main();   //这是C99强制的写法
main();       //C90中,这样写默认返回int类型

对于返回值不为void的函数来说,需要有return语句帮助其显式地返回值。对于main函数来说,C99规定如果遗漏return语句,在执行到main函数的右括号}时,会自动返回0值,而对于其他函数则没有此要求。

C99规定不允许在返回值类型不是void的函数中使用没有表达式的return语句(如果遗漏return,也能返回)。反之亦然,不允许在返回值类型是void的函数中使用带有表达式的return语句。

复制代码
int test(){
    printf("This is test."); //没有return语句,也能返回
}

int main(){
    test(); //没有return但会返回0
}

int test(){
    printf("This is test."); 
    return;  //会报错,因为一个非void返回值类型的函数使用了没有表达式的返回值
}

int main(){
    test();  //没有return但会返回0
}

void test(){
    printf("This is test."); 
    return 0;  //会报错,因为一个void返回值类型的函数使用了有表达式的返回值
}

int main(){
    test();  //没有return但会返回0
}
相关推荐
Alice-YUE25 分钟前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
云泽80830 分钟前
C++11 核心特性全解:列表初始化、右值引用与移动语义实战
开发语言·c++
froginwe111 小时前
DOM 加载函数
开发语言
Hello eveybody1 小时前
介绍一下背包DP(Python)
开发语言·python·动态规划·dp·背包dp
AI进化营-智能译站1 小时前
ROS2 C++开发系列12-用多态与虚函数构建可扩展的ROS2机器人行为模块
开发语言·c++·ai·机器人
iCxhust1 小时前
微机原理实践教程(C语言篇)---A002流水灯
c语言·开发语言·单片机·嵌入式硬件·51单片机·课程设计·微机原理
qeen872 小时前
【数据结构】建堆的时间复杂度讨论与TOP-K问题
c语言·数据结构·c++·学习·
莎士比亚的文学花园2 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
图码2 小时前
如何用多种方法判断字符串是否为回文?
开发语言·数据结构·c++·算法·阿里云·线性回归·数字雕刻
U盘失踪了2 小时前
python curl转python脚本
开发语言·chrome·python