我在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返回类型中,是否必须等于相同的数据类型?
答案 0 :(得分:3)
C非常宽容&#34;有这样的事情。隐式类型转换通常不是C中的错误。当然,这是一个哲学问题,其现代答案与编写第一批C编译器时的情况截然相反。现在我们并没有称之为宽容,我们实际上称之为 unforgiving ,因为它可以让错误无法检测到。
您可以让大多数现代C编译器为此类问题发出警告,但您需要检查编译器的文档以了解如何启用警告。 (可能类似于&#34; -Wall&#34;。)
答案 1 :(得分:1)
对于寻求快速解决方案的人来说,
Mike ....
已经说过大部分内容它应该对这种隐式转换发出警告......
我必须启用-Wconversion
标志才能显示警告:)