Согласно пересмотру в мае 2008,
Вы правы:
двоичный файл / оператор приводит к частному, и двоичный оператор % приводит к остатку от подразделения первого выражения вторым. Если второй операнд / или % является нулем, поведение не определено; иначе (a/b) *b + a%b равен a. Если оба операнда являются неотрицательными тогда, остаток является неотрицательным; в противном случае знак остатка является реализацией-defined75).
в Примечании 75 говорится:
Согласно работе в стадии реализации к пересмотру ISO C, предпочтительный алгоритм для целочисленного деления следует правилам, определенным в стандарте Фортрана ISO, ISO/IEC 1539:1991, в котором частное всегда округляется к нулю.
Возможности состоят в том, что C++ изолирует C в этом отношении. В настоящий момент это не определено, но они понимают толк к изменению его.
я работаю в том же отделе Stroustrup и с членом комитета. Вещи берут ВОЗРАСТЫ, которые будут выполнены, и его бесконечно политический. Если это кажется глупым, это, вероятно.
Если вы работаете под unix, вы можете записать файлы на диск, а затем запустить системный вызов tar / gzip их.
`tar -czf #{file_name}.tar.gz #{file_name}`
Этот проект Ruby Minitar был обновлен в 2009 году и, похоже, решит вашу проблему