А что, где-нибудь sizeof(char) != 1?
Это если вы какой-нибудь текст в юникоде будете выводить, то надо учитывать, сколько байт одна буковка займет (поэтому иногда и возникают затруднения у людей, пишуших софт для работы с юникодом). А для ASCII все просто.
Разве задача пишется под ДОС, где каждый байт на счету?
Я тебе не Майкрософт чтоб свои проги не оптимизировать, это раз.
Во вторых у меня есть и графическая версия, и консольная. Ясное дело консольную можно в дос компилить.
Я тебе не Майкрософт чтоб свои проги не оптимизировать
Тема отсутствия оптимизации в продуктах Майкрософт с одной стороны узко специализированная, с другой - явно флеймовая.
Лучше порадуйте, удалось ли решить текущие проблемы?
Лучше порадуйте, удалось ли решить текущие проблемы?
Еще как удалось. Я даже понял почему у меня все криво было. Я просто для чисел использовал 'char'. Вот он и выводил по умолчанию символы, а не цифры.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.
Лучше порадуйте, удалось ли решить текущие проблемы?
Еще как удалось. Я даже понял почему у меня все криво было. Я просто для чисел использовал 'char'. Вот он и выводил по умолчанию символы, а не цифры.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.
...Он по стандарту всегда 1. Ибо sizeof возвращает размер не в байтах, а в char'ах.
Нет, char'ы тут совсем непричем.
ISO/IEC 9899:TC2
6.5.3.4 The sizeof operator
....
2 The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. If the type of the operand is a variable length array
type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an
integer constant.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.
Кстати, если беспокоитесь об оптимизациях исполнения, то откажитесь от fstream в пользу fscanf/fprintf. fstream существенно медленнее.
Использовал я 'char' потому-что мне больше 120 чисел не надо. 'short int' занимает в памяти ~8 байт, а 'char' ~1 байт. Думаю перейду обратно на 'short int', всяко это будет экономичнее чем числа в символы преобразовывать.
Кстати, если беспокоитесь об оптимизациях исполнения, то откажитесь от fstream в пользу fscanf/fprintf. fstream существенно медленнее.
Я знаю, поэтому у меня две версии на C++ и на C99 =) На C99 работает все естественно быстрее.
А вы хотите, чтобы лог можно было читать пользователю? Может, просто создать структуру, в которую записывать данные, необходимые для сохранения, а потом эту структуру в файл и записывать?
А вы хотите, чтобы лог можно было читать пользователю? Может, просто создать структуру, в которую записывать данные, необходимые для сохранения, а потом эту структуру в файл и записывать?
Нет я хотел чтоб переменная 'battle' типа 'char' записывала как числа, а не как ASCII код.
Ладно, вашу проблему еще на предыдущей странице решили. Кстати, если уж вы учитесь программированию в С++, обратите внимание на возможность форматирования ввода-вывода класса std.
(ISO/IEC 14882:1998(E)) писал(а):1.7 The C++ memory model
The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to con-
tain any member of the basic execution character set and is composed of a contiguous sequence of bits, the
number of which is implementation-defined.
5.3.3 Sizeof
The sizeof operator yields the number of bytes in the object representation of its operand. The operand
is either an expression, which is not evaluated, or a parenthesized type-id. The sizeof operator shall not
be applied to an expression that has function or incomplete type, or to an enumeration type before all its
enumerators have been declared, or to the parenthesized name of such types, or to an lvalue that designates
a bit-field. sizeof(char), sizeof(signed char) and sizeof(unsigned char) are 1;