带返回值的函数,如果最后没东西返回,结果是返回一个0吗

发布网友 发布时间:2024-12-13 03:47

我来回答

3个回答

热心网友 时间:2024-12-13 05:33

某些语言,如java,是不允许不返回的,会出现语法错误。
对于C/C++,行为是不确定的。
我在ubuntu x86下测试是返回当时的eax寄存器的值,
测试1代码:
int main()
{
printf("a=%d", 0);
}
编译:
root@wang-geng:~# gcc test.c -Wall
test.c: In function ‘main’:
test.c:9: warning: control reaches end of non-void function//指出main没有返回值

执行:

oot@wang-geng:~# ./a.out
a=0root@wang-geng:~# echo $?
3//说明刚才的main返回了3,这个数其实是printf()那句的返回值
root@wang-geng:~#

测试2:
root@wang-geng:~# ./a.out

int func(int a, int b)
{
printf("a=%d, b=%d\n", a, b);
}
int main()
{
printf("%d\n", func(1, 2));
}
a=1, b=2
9//说明func返回了9,而9恰好是printf那句的返回值

综上,不返回是很危险的,如果是整型,结果往往错误,如果是指针,就更不测了。追问我编程键盘扫描函数,返回按下的键值,没按下时一直在扫描,是4*4的键盘,扫描完一个周期后,如果没键按下,那么返回的是什么呢?0还是空呢?

热心网友 时间:2024-12-13 05:34

某些语言,如java,是不允许不返回的,会出现语法错误。
对于C/C++,行为是不确定的。
我在ubuntu x86下测试是返回当时的eax寄存器的值,
测试1代码:
int main()
{
printf("a=%d", 0);
}
编译:
root@wang-geng:~# gcc test.c -Wall
test.c: In function ‘main’:
test.c:9: warning: control reaches end of non-void function//指出main没有返回值

执行:

oot@wang-geng:~# ./a.out
a=0root@wang-geng:~# echo $?
3//说明刚才的main返回了3,这个数其实是printf()那句的返回值
root@wang-geng:~#

测试2:
root@wang-geng:~# ./a.out

int func(int a, int b)
{
printf("a=%d, b=%d\n", a, b);
}
int main()
{
printf("%d\n", func(1, 2));
}
a=1, b=2
9//说明func返回了9,而9恰好是printf那句的返回值

综上,不返回是很危险的,如果是整型,结果往往错误,如果是指针,就更不测了。

热心网友 时间:2024-12-13 05:34

要看返回类型,有些是0有些是null追问unsigned char,怎么可以让他返回null,null就是什么都没有是吗?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com