13 Vs. 14; G++, по мотивам бора. (пояcните...)

Модератор: Модераторы разделов

Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux

13 Vs. 14; G++, по мотивам бора.

Сообщение polachok »

Код: Выделить всё

#include <stdio.h>
 int main()
 {
         int i = 5;
         i = ++i + ++i;
         printf("1:i=%d\n", i);
 }

1:i=14. ясно.

Код: Выделить всё

#include <stdio.h>
 int myinc(int &i) { return ++i; };
 int main()
 {
         int i = 5;
         i = ++i + ++i;
         printf("1:i=%d\n", i);
         i = 5;
         i=myinc(i)+myinc(i);
         printf("2:i=%d\n", i);
 }

1:i=13 // вот это и непонятно
2:i=13

g++ 4.1.2
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение Alxn1 »

Ну, вообще, как в каком-то ЖЖ правильно писали, результат вычисления данного выражения неопределено. В первом случае выражение оптимизируется компилятором несколько по-другому, нежели во втором (С++-компиляторы, вообще, оптимизирующие). У меня есть подозрение, что значение так же будет скакать и от флагов оптимизации, и от квалификатора volatile и, естественно, от компилятора. Я так думаю :)
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение serg_sk »

лол :)
Прибавьте вот так:

Код: Выделить всё

i= ++i + ++i + ++i + ++i + ++i;

Результаты будут еще круче %)
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение Liksys »

Код: Выделить всё

        int i = 0;
        i = ++i + ++i + ++i + ++i + ++i;
16)))))
Спасибо сказали:
Аватара пользователя
polachok
Бывший модератор
Сообщения: 2199
Статус: главный форумный маргинал
ОС: gnu/linux

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение polachok »

Alxn1
угу, попробовал -O3, стало 14...
И немедленно выпил.
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение Alxn1 »

Ну, значит правильно я думаю :)
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: 13 Vs. 14; G++, по мотивам бора.

Сообщение nerezus »

ICQ 547097
Спасибо сказали: