Category:

Сишники в чяте есть?

Допустим есть такая программа (MUD) и в ней есть объекты. Например, персонажи (characters, сокращенно char). И есть ссылки на объекты. И есть тип CHAR. И есть тип CHAR*.

И есть всякие функции, например
is_jew(CHAR*), которая проверяет, а не еврей ли персонаж.  И функции написаны через жопу, то есть если на вход функции будет подан ноль, то функция вызовет exception (pizdets). Но на всякий случай жопоголовый программист сделал проверку примерно такую

CHAR * posetitel_rynka;
...
if (posetitel_rynka && is_jew(posetitel_rynka) {расстрелять}

Как я понимаю, порядок вычисления неопределен и если так окажется, что posetitel_rynka==0, то функция is_jew()  все равно выполнится и будет exception.

И правильнее писать

if (posetitel_rynka) if (is_jew(posetitel_rynka) { Ганс, фойер!}

Или я что-то не совсем понимаю в современных компиляторах?

Disclaimer. Сия ошибка на проде так меня расстроила, что я невозбранно думаю исключительно о массовых расстрелах программистов, притом ударяя ладонью правой руки по ладони левой, а ладонью левой по ладони правой. (Ну еще последний клип Раммштайна добавил драмы, я его только что посмотрел)

Error

default userpic

Your reply will be screened

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.