C ++中的cout问题

时间:2014-07-27 18:11:47

标签: c++ cout

我编写了一个小型C ++程序,它使用C ++中的linkedLists实现堆栈的基本操作。在测试该程序时,我观察到cout的一个奇怪问题。 在主要功能中,

int main()
{
     stack *MainStack=new stack();
     MainStack->push(1);
     MainStack->push(2);
     std::cout<<MainStack->pop();
     std::cout<<MainStack->pop();
}

输出为21 当主要功能是

int main()
{
    stack *MainStack=new stack();
    MainStack->push(1);
    MainStack->push(2);
    std::cout<<MainStack->pop()<<MainStack->pop();
}

输出为12。

该错误的原因是什么? 任何人都可以告诉我这个错误的原因。

我的C ++程序

#include<iostream>
class stack
{
    int value;
    stack *next;
public:
    stack()
    {
        value=0;
        next=NULL;
    }
    stack(int data)
    {
        value=data;
        next=NULL;
    }
    void push(int data)
    {
        stack *temp;
        temp=next;
        next=new stack(data);
        next->next=temp;
        value++;
    }
    int pop()
    {
        int data;
        if(next==NULL)
        {
            std::cout<<"Underflow\n";
            return -1;

        }
        stack *temp=next;
        next=next->next;
        data=temp->value;
        delete(temp);
        value--;
        return data;
    }
    int top()
    {
        return next->value;
    }
    bool isStackEmpty()
    {
        if(next==NULL)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    int getCount()
    {
        return value;
    }
};
int main()
{
    stack *MainStack=new stack();
    MainStack->push(1);
    MainStack->push(2);
    std::cout<<MainStack->pop()<<MainStack->pop();
}

0 个答案:

没有答案