Float compile-time calculation not happening?

淺唱寂寞╮ 提交于 2019-12-02 04:23:38

In

1/60

Both of the operands are integers, so integer arithmetic is performed. To perform floating point arithmetic, at least one of the operands needs to have a floating point type. For example, any of the following would perform floating point division:

1.0/60
1.0/60.0
1/60.0

(You might choose to use 1.0f instead, to avoid any precision reduction warnings; 1.0 has type double, while 1.0f has type float)

Shouldn't TEST_FLOAT have the same value than TEST_C?

In the TEST_FLOAT case, integer division is performed and then the result of the integer division is converted to float in the assignment.

In the TEST_C case, the integer literals 1 and 60 are converted to float when they are assigned to TEST_A and TEST_B; then floating-point division is performed on those floats and the result is assigned to TEST_C.

Is TEST_C value resolved at compile time or at runtime?

It depends on the compiler; either method would be standards-conforming.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!