История изменений
Исправление hateyoufeel, (текущая версия) :
Не знаю, может потому что c aliasing. Компилер не знает, *a содержит все еще то же значение или что-то другие и фетчит его из памяти каждый раз. Но в Си можно указать, что *a не будет меняться. minus_swap(restric *a, …). Как-то так.
Всё проще, анон. В первом варианте переменные просто загружаются в разные регистры, а потом сгружаются обратно, но адреса поменяны местами.
А ещё в варианте с минусом потенциальное переполнение, и от этого сишным компилятором рвёт жопу. А потом сишникам, ибо UB.
Скептически смотрю на раст, т.к. не уверен что он может быть первым яп.
Так и есть. Только Си им тоже быть не может. Люди, у которых си – первый язык, вырастают лютыми говнокодерами.
ИМО важнее, чтоб яп был простым.
Си не является простым языком. Даже близко.
Исходная версия hateyoufeel, :
Не знаю, может потому что c aliasing. Компилер не знает, *a содержит все еще то же значение или что-то другие и фетчит его из памяти каждый раз. Но в Си можно указать, что *a не будет меняться. minus_swap(restric *a, …). Как-то так.
Всё проще, анон. В первом варианте переменных просто загружаются в разные регистры, а потом сгружаются обратно, но адреса поменяны местами.
А ещё в варианте с минусом потенциальное переполнение, и от этого сишным компилятором рвёт жопу. А потом сишникам, ибо UB.
Скептически смотрю на раст, т.к. не уверен что он может быть первым яп.
Так и есть. Только Си им тоже быть не может. Люди, у которых си – первый язык, вырастают лютыми говнокодерами.
ИМО важнее, чтоб яп был простым.
Си не является простым языком. Даже близко.