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

如题所述

某些语言,如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还是空呢?

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-02-02
某些语言,如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那句的返回值

综上,不返回是很危险的,如果是整型,结果往往错误,如果是指针,就更不测了。
第2个回答  2014-10-24
要看返回类型,有些是0有些是null追问

unsigned char,怎么可以让他返回null,null就是什么都没有是吗?

有返回值的函数未提供返回值,会如何?
系统会给他设置一个值作为返回值,通常是最后执行语句的结果。还有就是编译可能有Warning,其他应该没什么了。本人没有用过G++(Linux),谈的是VC++结果,若其他编译器结果不同(MinGW,XL C++,G++等),恳请指正。

当返回值为数组时,如果没有结果值返回null还是返回0长度数组,为什么
3、假设一个方法返回一个数组,如果它返回null,则调用方法必须先判断是否返回null,才能对放回数组进一步处理,而如果返回空数组,则无须null引用检查。鉴于此,返回数组的方法在没有结果时通常返回空数组,而不是null,这样做对于函数调用者的处理比较方便。

当返回值为数组时,如果没有结果值返回null还是返回0长度数组,为什么
当返回值为数组时,没有结果值返回null还是返回0长度数组是设置错误造成的,解决方法为:1、新建php文件。2、创建名为$people的数组。3、为数组$people赋值。4、current() 函数返回数组中的当前元素的值。5、输出当前元素的值。6、预览效果如图。

我想知道C语言返回类型函数,如果没有返回值,程序中没有return,那么函数...
如果函数有返回值,函数名前面一定相关的数据类型,不返回任何数据时,则需在函数名前冠以void关键字。如果什么都没有(不推荐),则系统默认返回int类型。在函数中,对于有返回值的函数,关键字后面必有与函数名前相同类型的数据(默认转换也可以),如果不加返回的变量或常量,会编译错误。

带返回值的函数,return后无变量可以吗?
如果返回0(return 0),则代表程序正常退出。通常,返回非零代表程序异常退出(可自行设定:如 return -1)。return 后面是个变量a,则意思是返回a这个变量。return 后面没有任何参数,就是执行到这一行以后 返回原函数,其实也就是中断函数执行,返回调用函数处。因此对于非void的函数,如果return后面...

函数返回值类型return 0是什么意?
函数返回值类型为`return 0`表示在函数执行完毕后,程序将返回一个整数值0。这个值的含义并不特定,而是取决于调用者对这个值的处理方式。在编程语言中,函数通常用于执行特定任务或操作,并在完成任务后返回结果。返回值类型可以是任何数据类型,包括整数、浮点数、字符串或其他复杂的对象类型。当函数设计...

javascript 里 执行一个有返回值的函数,但是返回值并没被接受。那么这个...
返回值会被丢掉的,并且这个函数会中断(不管这个函数后面有没有代码)。

C语言中返回值为空和返回值为零分别是什么意思?
返回值为空一般是在字符串变量函数里面。比如在语文课本里面找“高兴”两个字,如果找得到,就返回该课的课题名称,如果找不到这两个字,就要返回空,表示这本书里面没有“高兴”这么两个字。返回值0:意思和上面个差不多,只是这个相对的是数值型的,同样的例子,要求在一本书里面找“高兴”两个字...

主函数最后为何要来个return 0;?不来会怎样,还有return 0 跟return...
因为主函数是有整数型返回值的,所以需要return 0,不使用的话,程序编译会报错。两者区别如下:一、使用时机不同 1、return 0:在主函数没有返回值的情况下使用,指代返回值。2、return:在表示程序段结束时候使用,表示部分程序段结束。二、内存机制不同 1、return 0:整个程序段结束,内存中存储的...

c++中的return 0有什么用?
我们在写程序时,通常将那些不需要返回值的函数定义为 int 型,函数的最后一行写成“return 0;”。如果此函数没有正常运行则系统会返回一个-1,如果此函数正常运行完毕,则由此函数返回0。如果函数不需要返回值,将其定义为 void 型,则在一些比较新的编译器上编译,是要报错误的,但是在一些老的编译...

相似回答