当我输出输出时,一个有趣的结果

Ric*_*eek 1 c++ visual-c++

当我对输出进行类型转换时,我正在观察一个有趣的结果:

这是代码片段:

int bitSize = (int)log10(1.0*16)/log10(2.0);   //bistsize = 3  it should be 4
int temp = log10(1.0*16)/log10(2.0);           //temp = 4   
Run Code Online (Sandbox Code Playgroud)

基本上我想把log2(16)应该是4.我认为我对类型转换的理解是错误的.有什么建议?

谢谢

Ton*_*ony 5

我认为你只是在输出第一个log(..)函数的输出.在整个表达式周围加上括号:

int bitSize = (int)(log10(1.0*16)/log10(2.0));
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 5

尝试:

int bitSize = static_cast<int>(log10(1.0*16)/log10(2.0));
Run Code Online (Sandbox Code Playgroud)

新C++演员阵容的一个细节就是它们将参数括起来,因此很清楚你正在演绎什么.