Форум программистов, компьютерный форум CyberForum.ru

Странное рекурсивное поведение объекта std::cout - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа МКБ-10 написана на С++? http://www.cyberforum.ru/cpp-beginners/thread782654.html
Здравствуйте. Скажите, эта программа(МКБ-10) написана на С++? Благодарю.
C++ преобразование bitmap в YCbCr и обратно Доброго времени суток. Нужно преобразовать изображение из формата RGB в YCbCr и обратно. В принципе все работает, но после преобразования цвета искажены. Коэффициенты проверил не один раз - все правильно, кто может подсказать в чем косяк? (изображение прилагаются, изменен размер, преобразовано в jpg) unsigned char* RGBToYCbCr(BITMAPINFOHEADER* bh, unsigned char* lpSurface) { __int16 Y, Cb,... http://www.cyberforum.ru/cpp-beginners/thread782648.html
Треугольник задан своими вершинами (x1,y1),(x2,y2),(x3,y3). Найти высоты треугольника. C++
Буду очень признателен, если поможете безрукому... 1. Треугольник задан своими вершинами (x1,y1),(x2,y2),(x3,y3). Найти высоты треугольника. Правила форума
cout в классе C++
Создал класс. Вот фрагмент кода: #include <iostream> #include "stdafx.h" #include "put_O.h" using namespace std; char* mass;
C++ multimap http://www.cyberforum.ru/cpp-beginners/thread782626.html
Я что-то не понимаю в чем проблема! #include <iostream> #include <string> #include <map> using namespace std; int main() { multimap<string,float> coll;
C++ лаб роб дано n-ка дийсних чисел. впорядкувати их в порядку зростання подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
09.02.2013, 18:40     Странное рекурсивное поведение объекта std::cout
Цитата Сообщение от Kaimi Посмотреть сообщение
И на экране видим 21.
Идея понятна?
Тут дело в другом, действительно интересное поведение. Казалось бы, это тоже самое, что
C++
1
std::cout << 'e' <<  'n' ; // etc
но нет, компилятор генерит разный код.
Дизассемблировал в студии и в gcc, проблема не исчезла и суть получившегося кода одинакова (значит возможно это даже описано в стандарте, но лень туда лезть). Короче дело в следующем - в моем примере выше в стек кладется сначала 'n' потом 'e', т.е. внутри оператора << параметры будут извлекаться правильно, т.е. сначала 'e', потом 'n'. А вот этот код
C++
1
2
std::cout << a.qget() << a.qget() << a.qget() << a.qget()
        << a.qget() << a.qget() << a.qget() << '\n';
в ассемблере выглядет по-другому - аргументы кладутся в стек в порядке записи (т.е. 'e', 'n', 'g' и т.д.), значит внутри оператора << они будут извлечены в обратном порядке, что мы и видим на выходе.

На самом деле очень интересно, может кто-нибудь стандарт пошелестит?
 
Текущее время: 01:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru