编c语言闹鬼了!三个printf连续输出同一变量 ,结果却不一样!!
来源:百度知道 编辑:UC知道 时间:2024/09/27 15:18:23
printf("%d\n",last->xvhao);
printf("%d\n",last->xvhao);
printf("%d\n",last->xvhao);
这是我在程序中连续输出的“last->xvhao”,结果只有第一个正确,后两个值变了!但后两个值是相等的,以我现在的知识,这种现象是无法理解的!!清高人帮忙啊
程序很复杂啊,三百多行呢,如果没有附初值,第一个为什么正确呢,那也不应该输出不一样啊,我把部分代码贴出来
}
int main()
{
int xuanxiang=0;
geshou *a=(geshou*)malloc((sizeof(geshou))),*last;
a->xvhao=0;last=a;a->next=NULL;
printf(" while(5)
{
printf("请选择服务项:");
scanf("%d",&xuanxiang);
if(xuanxiang>8||xuanxiang<0)
printf("无效选项,请重新输入!\n");
switch(xuanxiang)
{
case 1:
printf("%d",last->xvhao);
last=newput(last);
break;
case 2:
last=shanchu(a,last); break;
case 3:
pingfen(a);break;
case 4:
yuanshi(a,last);break;
case 5:
defen(a);
paiming1(a,last);
zuizhongpaiming(a,last);brea
printf("%d\n",last->xvhao);
printf("%d\n",last->xvhao);
这是我在程序中连续输出的“last->xvhao”,结果只有第一个正确,后两个值变了!但后两个值是相等的,以我现在的知识,这种现象是无法理解的!!清高人帮忙啊
程序很复杂啊,三百多行呢,如果没有附初值,第一个为什么正确呢,那也不应该输出不一样啊,我把部分代码贴出来
}
int main()
{
int xuanxiang=0;
geshou *a=(geshou*)malloc((sizeof(geshou))),*last;
a->xvhao=0;last=a;a->next=NULL;
printf(" while(5)
{
printf("请选择服务项:");
scanf("%d",&xuanxiang);
if(xuanxiang>8||xuanxiang<0)
printf("无效选项,请重新输入!\n");
switch(xuanxiang)
{
case 1:
printf("%d",last->xvhao);
last=newput(last);
break;
case 2:
last=shanchu(a,last); break;
case 3:
pingfen(a);break;
case 4:
yuanshi(a,last);break;
case 5:
defen(a);
paiming1(a,last);
zuizhongpaiming(a,last);brea
你不把代码发上来别人不知到,至少发这个函数的吧 ,
多数问题是堆栈变量被覆盖了吧
--
你这个函数paimingxianshi返回的东西部分指向了堆栈上的东西,被printf覆盖了,所以第二次调用时就出错了,大概是这样吧
LZ把代码发给我,我帮你调试吧。。大家随便交流下
三百行的代码算短的。。
百度HI传文件
或者发到我的邮箱 gaoluo888@163.com
可能是你没有给这个变量赋初值。
贴代码,
能把程序贴出来吗?
肯定有其它问题的,,发过来看看?