鉴于:
double d;
int lsb;
Run Code Online (Sandbox Code Playgroud)
以下编译:
lsb = (floor(d));
lsb = lsb % 10;
Run Code Online (Sandbox Code Playgroud)
但是以下内容不是:
lsb = (floor(d)) % 10;
Run Code Online (Sandbox Code Playgroud)
IDE强调了开头floor并报告:
表达式必须具有整数或未整合的枚举类型.
YSC*_*YSC 11
你可以组合这两行,但这需要一个演员:
lsb = static_cast<int>(floor(d)) % 10;
Run Code Online (Sandbox Code Playgroud)
之所以存在多重载荷std::floor; 请注意以下事项:
double floor( double arg );
Run Code Online (Sandbox Code Playgroud)
因此,floor(d)是一个double并且不能直接int使用模数运算符(没有强制转换).