发布网友 发布时间: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就是什么都没有是吗?