我从函数中获取一个值而不返回

时间:2017-02-10 15:10:38

标签: c

我想知道这个简单的c代码中发生了什么:

#include <stdio.h>
int something(int a, int b) {
    int c = a * 3 + 4 * b;
}
int main()
{
    int res = something(12, 54);
    printf("%d\n", res);    
    return 0;
}

该功能没有返回,但“res”存储 中计算的值。

下面我展示了编译命令,执行和输出:

  

$ gcc main.c

     

$ ./a.out

     

252

EDITED

我已经将变量类型从int更改为float,相对于@Paul Ogilvie注释,它似乎返回存储的最后一个int:

#include <stdio.h>
float something(int a, int b) {
    float res = a * 3 + 4 * b * 1.0;
}
int main() {
    float res = something(12, 54);
    printf("%d\n", res);
    return 0;
}
  

$ gcc main.c

     

$ ./a.out

     

54

1 个答案:

答案 0 :(得分:3)

undefined behavior,请参阅here

  

到达任何其他值返回函数的末尾是未定义的行为,但仅当在表达式中使用函数的结果时。

使用gcc -Wreturn-type编译代码会发出相应的警告:

ret.c:4:1: warning: control reaches end of non-void function [-Wreturn-type]