Гость Опубликовано 11 января, 2002 Жалоба Опубликовано 11 января, 2002 vishel u menya spor s shefom. est' "classika" int a; int b a ^= b ^= a ^= b ___________________ vopros: deistvitel'no li proishodit pryamoi swap, ili eto compiler trick, typa swap pointers. interesno, kakie est' meneniya. Цитата
Гость Опубликовано 11 января, 2002 Жалоба Опубликовано 11 января, 2002 gcc -S поможет прояснить ситуацию Цитата
Гость Опубликовано 11 января, 2002 Жалоба Опубликовано 11 января, 2002 perepisal dlya yasnosti v unsigned short int a = 0xfa; unsigned short int b = 0x02; a = a ^ b; b = a ^ b; a = b ^ a; nda, takoe vpechatlenie shto -O# menyaet sut' dela. s -O3 main: pushl %ebp xorl %eax, %eax movl %esp, %ebp popl %ebp ret .Lfe1: bez: main: pushl %ebp movl %esp, %ebp subl $4, %esp movw $250, -2(%ebp) movw $2, -4(%ebp) movl -4(%ebp), %edx leal -2(%ebp), %eax xorw %dx, (%eax) movw -2(%ebp), %dx leal -4(%ebp), %eax xorw %dx, (%eax) movl -4(%ebp), %edx leal -2(%ebp), %eax xorw %dx, (%eax) movl $0, %eax leave ret gdb pokazivaet pryamoi swap. no eto ne ubezdaet. Цитата
Гость Опубликовано 11 января, 2002 Жалоба Опубликовано 11 января, 2002 -O - оптимизация под конкретный алгоритм. попробуй добавить printf в конце и посмотреть на ассемблерный код с -O3 Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.