当我忘记写return
函数的子句时,我遇到了这个问题,但是gcc
. 我修复了它,但开始想知道为什么如果没有return
. 以下是我尝试的一些示例:
#include "stdio.h"
#include "stdlib.h"
int func1 () {
int i;
i = 2;
}
int func2 (int a) {
int i = a+3;
}
int func3 () {
int i;
for (i = 0; i <= 1; i++);
}
int main(void) {
int a = 0;
int b = 0;
int c = 0;
a = func1();
printf("a = %d \n", a);
b = func2(a);
printf("b = %d \n", b);
c = func3();
printf("c = %d \n", c);
}
结果是:
a = 1
b = 4
c = 7
我的问题:
1)为什么会有这些结果?这有什么一般规则吗?
2)为什么要保留这个东西而不是报错?它可以在某处以某种方式“有用”吗?