这个函数返回值会是什么?

来源:百度知道 编辑:UC知道 时间:2024/06/20 13:10:27
int test(int n)
{
if(n)
{
return 1;
}
}

这个函数如果输入0会返回什么值?有什么意义?

我用VC试了下,结果总是-858993460,不知道为什么
谢谢各们的回答

我在别人的机上运行结果也是一样的

这个数到底有什么意义?为什么不是1或0或其它的?

错误的函数,讨论无益

你用的是Debug版的吧,是赋出值的
INT 初始化是0XCCCCCCCC
字符串初始化也是,就是“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”之类的

如果是Release版的,就是随机的了。

如果函数结束没有遇到return,而且又需要返回值的时候,那么会返回一个不确定的值

这个例子中,if判断为假,不执行return语句,而是直接结束,这样就会返回一个不确定的值

这个值是随机调用内存返回的,在不同机器上是不一样的

sayarasin的说法是错误的,这个例子返回值和n没有关系,况且人家都说了,函数输入为0

lsaunter的说法也是错误的,这个函数是有返回值得,因为函数说明了int,返回的数值是正确地
人家并没有让你改错,而是说明这个例题

应该:

int test(int n)
{
if(n)
{
return 1;
}
return 0;
}

你那个结果是eax里暂存的数,看例子:

#include <stdio.h>

int foo(int n)
{
if(n)
return n;
}

int main()
{
foo(1989);
printf("%d\n", foo(0));
return 0;
}

应该是没有返回值,-858993460应该是错的
你的函数定义为int类型
但是只有你输入n!=1的时候才返回1
应该加上一句变成
int test(int n)
{
if(n) return 1;
else return n;
}

n 是一个没有被初始化的值 ,是