鱼C论坛

 找回密码
 立即注册
查看: 3742|回复: 3

关于输出顺序问题

[复制链接]
发表于 2018-4-24 10:10:33 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 Sj中国智造 于 2018-4-24 10:13 编辑
/*-----------------------------------------------
            循环队列(C++实现代码)
-------------------------------------------------*/

#include <iostream>

#define MAX_SIZE 1025
#define YES 1
#define NO -1
#define OK 2
#define ERROR -2
using namespace std;

template<class T>
class CIRQUEUE
{
public:
    CIRQUEUE();//申请一块内存
    ~CIRQUEUE();//释放一块内存
    int QueueIn(T data);//入队
    T QueueOut();//出队

private:
    int front;//前指针
    int rear;//尾指针
    T *cirqueue;//指向分配的内存空间的首地址
};

//构造函数定义
template<class T>
CIRQUEUE<T>::CIRQUEUE()
{
    front = rear = 0;//初始化为0
    this->cirqueue = new T[MAX_SIZE];//开辟数据为T的MAX_SIZE大小的内存空间
    if (this->cirqueue == NULL)
    {
        cout <<"分配内存失败啦~~"<<endl;
    }
}

//析构函数的定义
template<class T>
CIRQUEUE<T>::~CIRQUEUE()
{
    if (this->cirqueue!=NULL)
    {
        delete[] this->cirqueue;
    }
}

//入队函数定义
template<class T>
int CIRQUEUE<T>::QueueIn(T data)
{
    if ((rear+1)%MAX_SIZE==front)
    {
        cout <<"对不起,队列已满!"<<endl;
        return ERROR;
    }
    else
    {
        rear = (rear+1)%MAX_SIZE;
        this->cirqueue[rear] = data;//入队
        return OK;//成功
    }
}

//出队函数定义
template<class T>
T CIRQUEUE<T>::QueueOut()
{
    if ((front+1)%MAX_SIZE>rear)
    {
        cout <<"队列已空!"<<endl;
        exit(-1);//错误退出
    }
    else
    {
        T data = this->cirqueue[front+1];//出队
        front = (front+1)%MAX_SIZE;
        return data;
    }
}

int main()
{
    CIRQUEUE<char> cirqu;

    cirqu.QueueIn('a');
    cirqu.QueueIn('b');
    cirqu.QueueIn('c');
    cout <<cirqu.QueueOut()<<cirqu.QueueOut()<<cirqu.QueueOut()<<endl;

    return 0;
}
为什么我只是把代码合起来输出,两个结果会不一样?详细见图

013.jpg
014.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-4-24 22:26:17 | 显示全部楼层
解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右
这就解释通了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-25 21:41:20 | 显示全部楼层
Sj中国智造 发表于 2018-4-24 22:26
解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右

其实不同的编译器计算的顺序是不同的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-27 19:11:13 | 显示全部楼层
Sj中国智造 发表于 2018-4-24 22:26
解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右

楼主你的问题解决了  你的20鱼币怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-1 21:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表