Тема: c++ cout
Показать сообщение отдельно
Старый 11.11.2003, 21:20   #18   
Форумец
 
Аватар для RomanPshenichny
 
Сообщений: 334
Регистрация: 14.04.2003
Возраст: 44

RomanPshenichny вне форума Не в сети
Павел-Kikoz

> Кстати, RomanPshenichny утверждает, что "этот код
> аналогичен func ( func ( func (0, i), i++ ), i);"

cout << i << i++ << i, это:

( ( (cout::operator << (i) )::operator << (i++) )::operator << (i)

и для педантов:

( ( (std::basic_ostream<char,std::char_traits<char> >::operator<< (i) )::operator << (i++) )::operator << (i).

В функциональном виде код аналогичен func ( func ( func (0, i), i++ ), i). В котором тоже будет наблюдатся такое же неопределенное поведение.

Точка следования в обоих вариантах одна. Все пераметры operator << и func вычисляются до вызова самих функций. Т.е. сначала посчитали i, i++, i, а потом уже вызвали функции. Порядок вычисления i, i++, i внутри одной точки следования не определен. Что такое точка следования -- читайте в книжках по C++.

> сколько там странц стандарт занимает

~700. Но это смотря каким шрифтом ;)

zic

> с каких это пор реализации языков от MS соответсвуют
> каким то стандартам ?

С 2003 года, с VC 7.1.
Казалось бы, причем тут MS? ;)
Это стандартный undefined behaviour описанный в стандарте.
  Ответить с цитированием