为什么函数返回值不是需要的值?

来源:百度知道 编辑:UC知道 时间:2024/05/28 08:16:04
#include<stdio.h>
#include<alloc.h>
#define NULL 0

int getValue(struct Node* head,int x)
{
/*这部分代码查看过,value的值为1711408259*/
return (value);
}

int main()
{
long Value;
Value=getValue(cbMulti,x);
printf("The value of the multinomial is %f.\n",Value);
return 0;
}

打印出来的值却是1120。
试了强制转换,也试了在函数中return“1711408259”这个值回来,value的值怎么样都只有4位数字,求解。
不好意思,忘了改了,那个的确本来是%d,我当时想可能是long或者int不够输出就换float试试,刚才忘了改回来了。而且已经试过,printf语句那里没有错误,我把Value在main函数里面赋一个很大的值可以正常显示,但是从getValue函数里面无论如何都得不到很大的值。
ps,这个程序在vc中能够正常运行,就是在TC中无法正常。谢谢

int在VC和TC中占有的内存数是不同的,在VC中是4个字节,而在TC或BC中是2个字节。

而1711408259明显无法用两个字节表示,所以肯定不会得到正确的结果,而在VC中4个字节却可以表示1711408259。

printf("The value of the multinomial is %f.\n",Value);
应该是
printf("The value of the multinomial is %d.\n",Value);

float和long int的存储结构不同,表示的值当然不懂(二进制数是相同的)

不可能,肯定是你的函数有问题了。把你函数全部代码发上来。

1711408259位数太多了 大概不能用整形 换个长整形试试