据我了解 Left shift Float type 一个人不能在浮点值上使用左移运算符。但是当我尝试它时,它给出了与乘以2 n 相同的答案。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// your code goes here
float a = 1.1234;
int b = (int)(a*(1<<10));
int c = (int)(a*pow(2,10));
cout << "\n a = " << a << " b = " << b << " c = " << c;
return 0;
}
输出a = 1.1234 b = 1150 c = 1150
在哪种情况下,两个输出(b
和c
)会有所不同?
答案 0 :(得分:9)
int b = (int)(a*(1<<10));
这里,由于1
和10
都是整数,因此您对整数而不是浮点数执行左移操作。
答案 1 :(得分:3)
在两种情况下,您将1024与a(1.1234)的值相乘。 这并不意味着你正在改变浮动值。