Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

темные закоулки языка C

Some dark corners of C

Набор забавных малоизвестных особенностей C. Самый интересный пример там, на мой взгляд - следующие две функции:
void foo1(int *x, int *y, int *z) {
  *x += *z;
  *y += *z;
}

void foo2(int *x, int *y, int *z) {
  int w = *z;
  *x += w;
  *y += w;
}


Если хотите - подумайте сами, почему компилятор генерирует более эффективный код для второй из них, foo2, перед тем, как прочитать ответ.

Правильный ответ: [Spoiler (click to open)]в первом случае компилятор не может исключить возможность того, что x==z.

Я также не знал, что в C99 есть ключевое слово restrict, которое решает эту проблему.
Subscribe

Recent Posts from This Journal

  • по существу был прав

    "В Берлине у нас часто гостил постоянный посетитель петербургских «журфиксов» композитор Сергей Сергеевич Прокофьев, приобревший за это время мировую…

  • счет из харчевни 1506 года

    Лондонская гильдия торговцев солью (основана в 1394-м году) сохранила в своих архивах редкий документ: подробный счет за званый обед на 50 особ,…

  • о мобилизации

    Илья Красильщик в ФБ: Разговоры про волны мобилизации, мне кажется, надо заканчивать. Это опасный самообман — когда ждешь волны, кажется, что…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 44 comments

Recent Posts from This Journal

  • по существу был прав

    "В Берлине у нас часто гостил постоянный посетитель петербургских «журфиксов» композитор Сергей Сергеевич Прокофьев, приобревший за это время мировую…

  • счет из харчевни 1506 года

    Лондонская гильдия торговцев солью (основана в 1394-м году) сохранила в своих архивах редкий документ: подробный счет за званый обед на 50 особ,…

  • о мобилизации

    Илья Красильщик в ФБ: Разговоры про волны мобилизации, мне кажется, надо заканчивать. Это опасный самообман — когда ждешь волны, кажется, что…