Почему между:
cout<<c.qget()<<" ";
cout<<c.qget()<<" ";
и:
cout<<c.qget()<<" "<<c.qget()<<" ";
есть разница в отображении? Не понимаю, почему значения меняются местами?
#include <iostream>
using namespace std;
const int SIZE=100;
template <class QType> class queue{
QType q[SIZE];
int sloc, rloc;
public:
queue(){sloc=rloc=0;}
void qput(QType i);
QType qget();
};
template <class QType>void queue<QType>::qput(QType i){
if (sloc==SIZE){
cout<<"Overload\n";
return;
}
sloc++;
q[sloc]=i;
};
template <class QType> QType queue <QType>::qget(){
if (rloc==sloc){
cout<<"Empty\n";
return 0;
}
rloc++;
return q[rloc];
};
int main(){
queue <int> a,b;
a.qput(10);
b.qput(19);
a.qput(20);
b.qput(1);
cout<<a.qget()<<" ";
cout<<a.qget()<<" ";
cout<<b.qget()<<" ";
cout<<b.qget()<<endl;
queue <double> c,d;
c.qput(10.12);
d.qput(19.99);
c.qput(-20.);
d.qput(0.986);
cout<<c.qget()<<" ";
cout<<c.qget()<<" ";
cout<<d.qget()<<" ";
cout<<d.qget()<<endl;
system("pause");
};
Потому что вы используете компилятор С++14 или ранее. Язык С++14 не давал вам никакой гарантии о том, в каком порядке будут делаться отдельные вызовы c.qget()
в выражении
cout << c.qget() << " " << c.qget() << " ";
Это скорее вопрос к вам: раз уж вы пользуетесь С++14 (или ранее), то с чего это вдруг вы ожидаете какой-то предсказуемости вывода в этом варианте?
Начиная же с С++17 порядок вызовов и вывода зафиксирован жестко и оба ваших варианта дают один и тот же вывод.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно написать функцию, которая переводит деньги с одного счета на другой
Заметил, что если сделать анонимный параметр, компилятор не будет ругаться на это
У меня есть программа она занимает порт 4001 если ее не отключать и запустить еще одну программу она будет выдавать ошибку пока порт не закроетсяВопрос,...