先上代码,有些不重要,直接拉下去看问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
#define namesize 15
typedef struct Seq
{ int number[MAXSIZE];
char name[MAXSIZE][namesize];
char address[MAXSIZE][namesize];
int top;
}SeqStack;
_int judge (SeqStack *seq)
{ if( seq->top> MAXSIZE-1 )
{ //printf("full"); return 1;
}
else
return -1;
}
SeqStack input(SeqStack *seq )
{
while(1)
{
** _ if( judge (seq ) )_**
{ printf("此判断成立"); return *seq; }
seq->top++;
scanf("%d,%s,%s",seq->number[seq->top],seq->name[seq->top],seq->address[seq->top] );
if(seq->number[seq->top]==-2)
{ seq->top--;
return *seq;
}
}
}_
int main (void)
{ struct Seq work;
work.top=-1;
printf(" if you want to over input,input -1 \n");
input( &work );
}
重点只要看我截图的部分俩个区域看书就行了
judge 是判断 栈满,input是输入函数
初始的 top是-1
if( judge (seq ) )条件一开始就成立了?!?!
但是我输入 printf(“%d”,judge (seq )显示结果是-1,并且就应该是-1
解决方法有,但我想知道为什么。。。用的vs2010
感觉是vs的问题?关于if的或者。。。