如何评估带有文字后缀 U L F 的 C 表达式?

How to evaluate a C expression with literal suffixes U L F?

我需要帮助来理解应该如何截取下面的表达式,因为我不知道。请帮忙

Expression: 11U/22L*(3.75F-2)+3./6+.25/1.F;
Choices:
A) 0.5       B) 0.25
C) 0.0       D) 0.75

U: 无符号整数
L: 长整数
F: 浮动

整数文字:[有符号] int
FP字面量(无后缀f/F):double

11U / 22L * (3.75F - 2) + 3. / 6 + .25 / 1.F
-> unsigned / long * (float - int) + double / int + double / float

现在,我们需要了解operator precedence and type promotion (conversion)


则表达式的计算结果为:

unsigned / long -> 提升为 long
*
(float - int) -> 提升为 float
+
double / int -> 提升为 double
+
double / float -> 提升为 double


将值放入:

11U / 22L -> 0L
*
(3.75F - 2) -> 1.75F
+
3. / 6 -> 0.5
+
.25 / 1.F -> 0.25


=> 0L * 1.75F + 0.5 + 0.25

=> 0F + 0.5 + 0.25

=> 0.5 + 0.25

=> (double) 0.75