如何评估带有文字后缀 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
我需要帮助来理解应该如何截取下面的表达式,因为我不知道。请帮忙
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