vakito
11-05-2007 10:48
Как себя занять? Правильно, читаем башорг.
Задача.
i=5;
i = ++i+ ++i;
i=?

Ява выдает 13, С++ 14, камрад Xirax говорит, что php выдает 13.
Вопрос: почему разный результат?
это [ кто знает? ]
Комментарии:
Камрад
Zanokra ну как? i=i++
Сначала присвоение, потом увеличение без сохранения.

Камрад
sentaus
почему 1ый случай секонда так работает? (не 14)

Someday I'ma SuperBitch
vakito О!!я наю...i = i + (-i) + i....кацца не забыла математику...

Камрад
Rina
так. стоп. математика не при чем. речь о программировании.

13-05-2007 18:33
Камрад
Хороший вопрос

Компиляция в режиме O0
first:
// int i = 5;
movl $5, -4(%rbp)
//i = ++i + ++i;
addl $1, -4(%rbp)
addl $1, -4(%rbp)
movl -4(%rbp), %eax
addl %eax, -4(%rbp)

second:
// int i = 5;
movl $5, -12(%rbp)
//i = ++i + ++i;
movl -12(%rbp), %eax
addl $1, %eax
movl %eax, -12(%rbp)
movl -12(%rbp), %edx
movl -12(%rbp), %eax
addl $1, %eax
movl %eax, -12(%rbp)
movl -12(%rbp), %eax
leal (%rdx,%rax), %eax
movl %eax, -12(%rbp)

В общем, во втором случае компилятор повёл себя по-джавному. Примечательно, что в режиме O2 код обоих фрагментов абсолютно идентичен и занимает всего одну инструкцию
movl $14, %esi

Камрад
sentaus
я в этом плохо разбираюсь. В абапе же нет всего этого.
На пальцах расскажи.

13-05-2007 23:53
Камрад
В общем, это практический пример. Anafay теорию уже всю рассказал.

13-05-2007 23:56
не_как_все
vakito ну как? i=i++
Сначала присвоение, потом увеличение без сохранения.

хехе, увеличивает ту и, что справа?

Someday I'ma SuperBitch
Оооооооооооооооооо!!!!!

Камрад
Zanokra
ты вот файл сначала изменяешь, а потом сохраняешь. Изменения сохраняются. А можно сохранить, а потом изменить -- изменения пропадут. Так и тут.

14-05-2007 00:01
не_как_все
ааа!

14-05-2007 00:01
Камрад
Rina
Это не ОООООО, а O-нуль.

Ваш комментарий:
Гость []
[смайлики сайта]
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий
Закрыть