当我对输出进行类型转换时,我正在观察一个有趣的结果:
以下是代码段:
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
基本上我想把log2(16)应该是4.我认为我对类型转换的理解是错误的。有什么建议吗?
由于
答案 0 :(得分:5)
我认为你只是在转换第一个log(..)
函数的输出。在整个表达式周围加上括号:
int bitSize = (int)(log10(1.0*16)/log10(2.0));
答案 1 :(得分:5)
尝试:
int bitSize = static_cast<int>(log10(1.0*16)/log10(2.0));
新C ++演员阵容的一个细节就是他们将参数括起来,因此很清楚你正在演绎什么。