#cpp #c
Есть стек, реализованный на массиве. Почему при выполнении данного кода получаем в результате "12", если же написать "cout" в разных строках то получаем "21"? Буду очень благодарен за объяснение или статью где можно почитать об этом. #includeusing namespace std; struct stack { int size = 0; int st[1024]; }; void push(stack &st, int data) { if(st.size >= 1024) cout<< "Stack Overflow!\n"; else { st.st[st.size] = data;st.size++; } } int pop(stack &st) { if(st.size>=0) { --st.size; int data = st.st[st.size]; return data; } else cout<< "Stack Underflow!\n"; } int main() { stack mainstack; push(mainstack, 1); push(mainstack, 2); cout<< pop(mainstack)< Ответы
Ответ 1
В данном случае порядок вызова функций pop() не определён, они не вызываются слева-направо, а так как решит компилятор. Точно так же, как и в выражении f() + g() что вызовется f() перед g() или наоборот в стандарте не говорится - всё решается компилятором. Порядок вычисления
Комментариев нет:
Отправить комментарий