当它的类型与声明的返回类型不同时返回值会发生什么?

时间:2015-08-27 11:15:36

标签: c return-value

为什么我的简单C程序打印" hello world"并且在没有错误的情况下进行编译,并且当我在return语句旁边给出一个浮点数时运行正常?这不是一个错误吗?

这是我的代码:

#include<stdio.h>
int main()
{
    printf("hello world");
    return 2.1;
}

5 个答案:

答案 0 :(得分:3)

当从函数的声明类型返回不同的类型时,该值将自动转换为声明的类型。所以它等同于:

return (int) 2.1;

答案 1 :(得分:3)

出于同样的原因

int main(void)
{
    // ...
    int x = 2.1;

    // ...
   return x;
}

这称为implicit conversion

答案 2 :(得分:1)

返回代码将在返回时自动生成。 长版是

return (int) 2.1;

答案 3 :(得分:0)

您的代码将返回一个整数,因为编译器会负责将float转换为整数。

答案 4 :(得分:0)

这是正常的,因为值可以隐式转换为声明的类型。编译器不介意,但你会在运行时得到意想不到的结果,在这个特定的情况下,转换为(int)。