int如何等于返回long int的另一个函数?

时间:2015-11-22 17:22:09

标签: c function types

我在C

中获得了以下代码
logging.error

输出-1

尽管声明了函数原型,但这个文件甚至是如何编译? int #include <stdio.h> #include <limits.h> long checks(); void main() { int results = checks(); printf("%d", results); } long checks(){ return LLONG_MAX; } 应该会出错!

此外,返回类型不匹配!

在函数的C返回类型中,是否必须等于相同的数据类型?

2 个答案:

答案 0 :(得分:3)

C非常宽容&#34;有这样的事情。隐式类型转换通常不是C中的错误。当然,这是一个哲学问题,其现代答案与编写第一批C编译器时的情况截然相反。现在我们并没有称之为宽容,我们实际上称之为 unforgiving ,因为它可以让错误无法检测到。

您可以让大多数现代C编译器为此类问题发出警告,但您需要检查编译器的文档以了解如何启用警告。 (可能类似于&#34; -Wall&#34;。)

答案 1 :(得分:1)

对于寻求快速解决方案的人来说,

Mike ....

已经说过大部分内容

它应该对这种隐式转换发出警告......

我必须启用-Wconversion标志才能显示警告:)