Здравствуйте, Аноним, Вы писали:
А>Почему результатом я получаю не 4339868000? такое впечатление что значение обрезается до 32 бит!
А>Вот код:
А>int FS2; // FS2=4339868
А>__int64 FS;
А>FS = FS2*1000;
А>после чего в FS находится 44900704...
В выражении
FS2*1000 оба операнда имеют тип int. А посему и результат выражения имеет тип int.
Надо например так:
__int64 FS = FS2;
FS *= 1000;
Почему результатом я получаю не 4339868000? такое впечатление что значение обрезается до 32 бит!
Вот код:
int FS2; // FS2=4339868
__int64 FS;
FS = FS2*1000;
после чего в FS находится 44900704...
Здравствуйте, Аноним, Вы писали:
А>Почему результатом я получаю не 4339868000? такое впечатление что значение обрезается до 32 бит!
А>Вот код:
А>int FS2; // FS2=4339868
А>__int64 FS;
А>FS = FS2*1000;
А>после чего в FS находится 44900704...
Прошу не бить меня ногами, но если попробовать так:
FS = (__int64)FS2 * (__int64)1000;
Ы?
Здравствуйте, Plisteron, Вы писали:
P>Здравствуйте, Аноним, Вы писали:
А>>Почему результатом я получаю не 4339868000? такое впечатление что значение обрезается до 32 бит!
А>>Вот код:
А>>int FS2; // FS2=4339868
А>>__int64 FS;
А>>FS = FS2*1000;
А>>после чего в FS находится 44900704...
P>Прошу не бить меня ногами, но если попробовать так:
P>P>FS = (__int64)FS2 * (__int64)1000;
P>
P>Ы?
Действительно!
спасибо.