关于输出顺序问题
本帖最后由 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;//开辟数据为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 = 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 = (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;
}为什么我只是把代码合起来输出,两个结果会不一样?详细见图 解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右
这就解释通了! Sj中国智造 发表于 2018-4-24 22:26
解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右
其实不同的编译器计算的顺序是不同的。 Sj中国智造 发表于 2018-4-24 22:26
解决了,原来cout的输出顺序有如下规律:
计算顺序:自右至左
输出顺序:自左至右
楼主你的问题解决了你的20鱼币怎么办{:10_256:}
页:
[1]