-
Тут как-то пример приводили...
int func(int x, int y)
int i = 1;
int f = func(i, i++);
Чему будет равно f ?
-
> [20] Юрий Зотов © (28.08.08 19:05)
0 ?
-
> [20] Юрий Зотов © (28.08.08 19:05)
0 по идее?
А вообще это пример дурного кода. ИМХО.
> [19] Ega23 © (28.08.08 19:04)
в принципе это не такая уж и проблема, скорее дело привычки(ИМХО), да и инклюды имеет несколько преимуществ перед uses.
-
> в принципе это не такая уж и проблема, скорее дело привычки(ИМХО)
Про grep я в курсе. Но - неудобно.
-
> Юрий © (28.08.08 19:07) [21]
Зависит от порядка вычисления выражений (аргументов при вызове функции), а он стандартом языка не регламентирован. В итоге может получиться, что один и тот же исходный код, но откомпилированный разными компиляторами, будет давать разные результаты. Что ужасно.
> @!!ex © (28.08.08 19:10) [22]
Конечно, это пример дурного кода. Даже ОЧЕНЬ дурного кода. Но если язык позволяет писать такой код, то это тоже очень плохо.
-
> Зависит от порядка вычисления выражений (аргументов при
> вызове функции), а он стандартом языка не регламентирован.
> В итоге может получиться, что один и тот же исходный код,
> но откомпилированный разными компиляторами, будет давать
> разные результаты. Что ужасно.
Хм... Почему?
Вроде бы ++ после переменной говорит о том, что она будет инкрементирована ПОСЛЕ того, как будет использовани ее значение. Нет?
-
> @!!ex © (28.08.08 19:22) [25]
Предположим, сначала вычисляется второй параметр. Тогда чему будет равен первый?
-
> [26] Юрий Зотов © (28.08.08 19:24)
Так он в этот момент еще не использован, значит не вычисляется.. разве нет?
-
Хотя ++i дает уже не предсказуемый вариант... согласен...
-
> @!!ex © (28.08.08 19:32) [27]
1. Вычисляется значение ВТОРОГО аргумента. Оно будет равно 1.
2. Переменная i УЖЕ использована (для вычисления значения второго аргумента) и поэтому будет инкрементирована СРАЗУ после вычисления выражения.
3. Первый аргумент получится равным 2.
4. Результат будет равен 1.
Если же сначала вычисляется ПЕРВЫЙ аргумент, то результат будет равен нулю.
-
> Мне интересны ваши мысли. Я прокомментирую по ходу
А мне неинтересны "походные" комментарии моих мыслей)
Явился тут, "панимаишь", какой-то ЗентаАбсента с откровенным запахом дилетанта, но при этом "профипонтами") ..
-
> Чем вам лично не нравится CPP?
Отсутствием аналога "function of object", замороченностью с header-ами, отсутствием дельфийски-удобного редактора кода =)
-
> Отсутствием аналога "function of object"
А разве статический метод не аналог ?
-
>[16] @!!ex © (2008-08-28 18:54:00)
>Помойму вполне адекватный язык…
угу. с недосборщиком недомусора, да.
>[21] Юрий © (2008-08-28 19:07:00)
>0 ?
it depends. порядок вычисления операндов не специфицирован, постэффекты тоже. может быть func(1, 1), может func(2, 1).
>[25] @!!ex © (2008-08-28 19:22:00)
>Вроде бы ++ после переменной говорит о том, что она будет инкрементирована ПОСЛЕ
>того, как будет использовани ее значение.
угу. только компилер может решить, что второй операнд вычислить стоит первым. а ++ увеличивает значение сразу, а не после того, как всё выражение вычислено.
>[31] Asteroid © (2008-08-28 20:54:00)
>отсутствием дельфийски-удобного редактора кода =)
дада, это особенно! почему в g++ IDE не встроили?! %-)
зыж а мне вот нравится ровно одним: наличием Qt. за Qt я даже согласен простить цпп врождённый идиотизм.
---
All Your Base Are Belong to Us
-
> Чем вам лично не нравится CPP?
тем, что не компилируется в Delphi 7
-
> А разве статический метод не аналог ?
Не аналог, доступ к не-статическим полям мне никто не обеспечит; если же объявлять каждую требуемую переменную как volatile....уж лучше обойтись без function of object =)
В принципе это реализуемо, но....хотелось бы нативную поддержку.
-
> Сергей М. © (28.08.08 19:50) [30]
>
>
> > Мне интересны ваши мысли. Я прокомментирую по ходу
>
>
> А мне неинтересны "походные" комментарии моих мыслей)
> Явился тут, "панимаишь", какой-то ЗентаАбсента с откровенным
> запахом дилетанта, но при этом "профипонтами") ..
Присоединяюсь.
Добавлю, что если кому-то интересны чьи-то мысли и он хочет их узнать, то просьба должна быть более вежлива. Иначе это похоже на просьбу получить в челюсть.
-
> Asteroid © (28.08.08 21:19) [35]
Есть похожий аналог:
class A
;
typedef void (A::*ClassAFuncPtr)() ;
void main()
-
А теперь что мне не нравится в С++:
1. Система include`ов, отсутствие нормальной модульности.
2. Наличие нескольких темных моментов (типа приведенного примера с неустановленным порядком вычисления), которые дают возможность прострелить себе ногу. Но, вцелом, эти все страшилки больше для примеров годятся. В реальных проектах на такое ни разу не напарывался.
3. Тяжкое наследие С.
4. Нет reflection.
5. Нет лямбд с замыканиями.
6. Нет *нормального* метапрограммирования. Всякие шаблонные извраты не в счёт.
Это так, навскидку. О том, что мне в С++ не нравится я могу говорить часами :)
-
А мне нравится С++.
Мне даже ABAP нравится.
И IL и С# нравится также.
И другие языки с которыми имел дело.