#include<stdio.h> #include<stdlib.h> #define STACKSIZE 100 typedef struct { int top; int data[STACKSIZE]; } stack; //スタックの初期化 void initstack(stack *s){ s->top = -1; } //スタックが空か int stackempty(stack *s){ return s->top < 0; } //スタックにデータをプッシュ void push(stack *s,int x){ s->top++; if(s->top >= STACKSIZE){ puts("overflow"); exit(1);} else s->data[s->top]=x; } //スタックからデータをポップ int pop(stack *s){ if(s->top<0){ puts("underflow"); exit(1);} else return s->data[s->top--]; } int main(void){ stack S; initstack(&S); push(&S,1); push(&S,2); push(&S,3); (1)://printf("%d %d %d",pop(&S),pop(&S),pop(&S)); 出力 1 2 3 (2)/*printf("%d",pop(&S)); printf("%d",pop(&S)); printf("%d",pop(&S));*/ }
このプログラムでは1,2,3とSに積んでいるのでしているので3,2,1とポップしてほしいのですが
(1)で出力すると123、(2)で出力すると321と実行結果がなんでか違ってしまいます。
原因がさっぱりわからないのでどなたか教えていただけないでしょうか