I am new at C programming. I wrote some code for a stack exercise. The question is: one of the result is wrong, but when I debug step by step, the number changed abruptly. Could you help me solve this?
// @name mystack.c
// Created by lilei on 2017/3/10.
//
#include "mystack.h"
#include <malloc.h>
#include <stdio.h>
Stack createStack(){
    Stack stack = (Stack)malloc(sizeof(Stack));
    stack->top = -1;
    return stack;
}
int isFull(Stack s){
    if (s->top == MAXSIZE-1){
        return 1;
    } else{
        return 0;
    }
}
int push(Stack s, ElementType item){
    if(!isFull(s)){
        s->top++;
        s->data[s->top] = item;
        return 1;
    } else{
        printf("full!");
        return 0;
    }
}
int isEmpty (Stack s){
    if(s->top == -1){
        return 1;
    } else{
    return 0;
    }
}
ElementType pop(Stack s){
if(!isEmpty(s)){
    ElementType e = s->data[s->top];
    s->top--;
    return e;
}
}
void myPrintf(Stack s){
    int len = s->top;
     printf("The data are ");
   while(len >= 0){
        printf("%d ", s->data[len]);
        len--;
    }
    printf("\n");
}
int main(){
    Stack s = createStack();
    for(int i = 0; i < 7; i++){
        push(s, i*2);
    }
    myPrintf(s);
    printf("isEmpty:%d, isFull:%d\n, pop one:%d", isEmpty(s), isFull(s), pop(s));
}
The result is

 
     
    