我不明白为什么sizeof运营商产生以下结果:
sizeof( 2500000000 ) // => 8 (8 bytes).
Run Code Online (Sandbox Code Playgroud)
...它返回8,当我执行以下操作时:
sizeof( 1250000000 * 2 ) // => 4 (4 bytes).
Run Code Online (Sandbox Code Playgroud)
...它返回4而不是8(这是我的预期).有人可以澄清如何sizeof确定表达式(或数据类型)的大小以及为什么在我的特定情况下会发生这种情况?
我最好的猜测是sizeof运算符是编译时运算符.
赏金问题:是否有运行时运算符可以评估这些表达式并产生我的预期输出(没有强制转换)?
在下面的代码片段中,auto将变量推导出为double,但是我想要float。
auto one = 3.5;
Run Code Online (Sandbox Code Playgroud)
它是否始终double用于带小数点的文字?如何确定浮点数和两倍数?
为什么我需要输入3.14f而不是3.14才能禁用所有这些警告?这有一个连贯的原因吗?
为什么sizeof(5.0)我的机器为float数据类型分配了4个字节,因此返回8作为输出而不是4 ?默认情况下,是否考虑5.0为double(内存分配= 8个字节),如果是的话,为什么会这样呢?