关于 用函数的返还值 做 if判断条件的问题

先上代码,有些不重要,直接拉下去看问题

 #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的或者。。。

查看条件判断,“-1”为真,

c中if的判断,数值型,只有0时才是假,非0都是真

c中的if判断没有写明,默认是数值,0为真,否则为假