博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中带有返回类型的函数没有return语句的影响
阅读量:6947 次
发布时间:2019-06-27

本文共 781 字,大约阅读时间需要 2 分钟。

网上查资料发现C++编译器不允许这种做法,会报编译错误,但是C编译器如GCC一般不会报错,但返回的值不确定。

自己写了简单的代码做了个试验,代码如下:

 

#include <stdio.h>

int a()

{
  // printf("function a called\n");
}

int b()

{
  // printf("function b called\n");
}

int main()

{
  int a1 = a();
  int b1 = b();

  printf("a1=%d, b1=%d\n", a1, b1);

}

 

运行结果,当不放开注释时结果如下:

 

当放开注释时结果如下:

 

当方法a放开注释,方法b不放开注释时,结果如下:

 

似乎函数返回的值总是相同的,而且范围只在0和1之间。

又加了一个方法c,继续观察结果:

#include <stdio.h>

int a()

{
printf("function a called\n");
}

int b()

{
// printf("function b called\n");
}

int c()

{
//int c = 1 + 2;
}

int main()

{
int a1 = a();
int b1 = b();
int c1 = c();

printf("a1=%d, b1=%d, c1=%d\n", a1, b1, c1);

}

编译执行结果为:

将a方法的内容注释掉,编译执行结果为:

 

似乎规律是只要有一个方法中有可执行的语句,所有方法都返回0,如果所有方法都是空方法(没有语句)就都返回1(目前尚不确定其他环境下是否也是相同结论)。

目前还不清楚其中的原理,暂时记录实验现象。

 

转载于:https://www.cnblogs.com/mobius2018/p/9844060.html

你可能感兴趣的文章
表单元素之搭车系
查看>>
mysql+redis
查看>>
[Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)
查看>>
sublime开启vim模式
查看>>
Rikka with Chess(规律)
查看>>
【设计模式】迭代器模式
查看>>
MATLAB中imshow()和image()
查看>>
Atitit.eclipse git使用
查看>>
JAVA逆向&反混淆-追查Burpsuite的破解原理(转)
查看>>
cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)
查看>>
文档批量格式化之word技能
查看>>
C#~异步编程再续~await与async引起的w3wp.exe崩溃
查看>>
c3p0数据库连接池死锁问题
查看>>
SVN版本冲突解决
查看>>
java多线程知识点汇总(四)多线程知识点脉络图
查看>>
nginx的upstream目前支持5种方式的分配
查看>>
android图像处理(3) 底片效果
查看>>
stl 之set图解
查看>>
HDU 3569 Imaginary Date 简单期望
查看>>
怎么清除火狐浏览器的cookie?
查看>>