Я ищу static_cast with bounded types.Является ли static_cast для ограниченного типа зависимым от реализации?
Является ли поведение конкретным поведением? Другими словами (с учетом 16-битных шорты и 32-битные длинные позиции) является
long x = 70000;
short y = static_cast<short>(x);
гарантированно производить у = 4464 (младшие 16 бит х)? Или только на маленькой машине?
Я всегда предполагал, что это будет, но я получаю странные результаты на машине большого конца и пытаюсь понять их.
Вот настоящая проблема. У меня есть два time_t (предположительно 64 бит), которые я «знаю» всегда будет в пределах некоторого разумного количества секунд друг от друга. Я хочу показать эту разницу с printf. Код является многоплатформенным, поэтому вместо того, чтобы беспокоиться о том, что является базовым типом time_t, я делаю printf («% d»), передавая static_cast <int> (time2-time1). Я вижу нуль, несмотря на то, что printf находится в блоке, обусловленном (time2! = Time1). (Printf находится в библиотеке, нет разумной возможности использовать cout вместо этого.)
Возможно ли, что static_cast вернет высокие 32 бита time_t?
Есть ли лучший способ сделать это?
Спасибо,
Странно. Я набираю static -cast угловой кронштейн int anglebracket (time2-time1), но то, что отображается только static_cast (time2-time1). Мне нужно бежать как static_cast \ \> (time2-time1) или что-то в этом роде? –
Charles
Решенный. Необходимо использовать синтаксис амперсандов. – Charles