#include<stdio.h>
#include<stdlib.h>
int main(void) {
constexpr double d = 2.2;
constexpr int i = static_cast<int>(d*10); // 显式强制转换
printf("%d\n", i);
return EXIT_SUCCESS;
}
不过这里要提个醒:2.2作为double是无法精确表示的,d*10的实际值其实是接近22但略小的数(比如21.999999999999996),强制转换后会得到21而不是你预期的22。如果想要准确的整数结果,更靠谱的方式是直接用整数常量初始化,比如constexpr int i = 22;,或者使用能精确表示的浮点值(比如2.0这种)。