LINUX.ORG.RU

История изменений

Исправление bugfixer, (текущая версия) :

Кучу кода чинил где из-за чьего-то тупого «суну int по дефолту» были баги.

Я уверен что чинил не меньше связанных с чьей-то идеей «8/16 бит здесь хватит». Повторюсь - нужны довольно веские причины откланяться от дефолта, имхо.

Как минимум, стоит подумать нужен ли тебе знак у этого числа.

Где гарантии что никто по дороге не засунет int в unsigned? А потом начинаются проблемы с implicit conversions, -1 suddenly becoming a very large value, etc. Проще оставаться в одном домене, в данном случае - signed integers.

последствие этого тупизма прямо в libc - тип возврата snprintf

Вы о том что оно int а не ssize_t? Как часто Ваши строки не умещаются в 2GB?

И таки мне видится что это всё именно наследие со времён K&R.

Это прямое следствие ABI, и предположения «int» - это самый быстрый integral type on a target platform, register size basically - в частности в случае x86 ints возвращаются в eax, что dirt cheap.

Исходная версия bugfixer, :

Кучу кода чинил где из-за чьего-то тупого «суну int по дефолту» были баги.

Я уверен что чинил не меньше связанных с чьей-то идеей «8/16 бит здесь хватит». Повторюсь - нужны довольно веские причины откланяться от дефолта, имхо.

Как минимум, стоит подумать нужен ли тебе знак у этого числа.

Где гарантии что никто по дороге не засунет int в unsigned? А потом начинаются проблемы с implicit conversions, -1 suddenly becoming a very large value, etc. Проще оставаться в одном домене, в данном случае - signed integers.

последствие этого тупизма прямо в libc - тип возврата snprintf

Вы о том что оно int а не size_t? Как часто Ваши строки не умещаются в 2GB?

И таки мне видится что это всё именно наследие со времён K&R.

Это прямое следствие ABI, и предположения «int» - это самый быстрый integral type on a target platform, register size basically - в частности в случае x86 ints возвращаются в eax, что dirt cheap.