Я не понимаю, почему оператор sizeof
производит следующие результаты:
sizeof( 2500000000 ) // => 8 (8 bytes).
... он возвращает 8, и когда я делаю следующее:
sizeof( 1250000000 * 2 ) // => 4 (4 bytes).
... он возвращает 4, а не 8 (что я и ожидал). Может ли кто-нибудь уточнить, как sizeof
определяет размер выражения (или типа данных) и почему в моем конкретном случае это происходит?
Мое лучшее предположение состоит в том, что оператор sizeof
является оператором времени компиляции.
Вопрос о Bounty: Есть ли оператор времени выполнения, который может оценивать эти выражения и производить ожидаемый результат (без кастинга)?