- 1
while((*dst++ = *src++));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−47
while((*dst++ = *src++));
двойные скобки, чтоб заткнуть ворнинг
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
В Паскале, например, это важно, потому что в нём byte и char — это принципиально разные типы и для преобразования из одного в другой нужен явный каст.
--заткнись, ворнинг!
Если царь превратится в опасного кусачего зомби, я, кажется, знаю, как спастись. Надо пропатчить линух, чтобы он мапил страницу с нулевым адресом в RAM, а не сегфолтил. На таком линуксе не будет работать сишкин стандарт -- получится ОС, куда он забраться не сможет никогда!
Или трансляция число <-> указатель не implementation-defined? Лень открывать стандарт...
Класс! Т.е. можно сделать реализацию сишечки, в которой числа бесполезно кастовать в указатели, т.к. всегда получается какой-нибудь NULL, который крашится при разадресации. Ну и при обратном касте всегда возвращать 0.
Ибо нехуй.
Но null pointer dereference -- это UB. Почему это B не может быть возвратом числа 0x6c6f6c7069647229?