我有以下代码
#include <iostream>
using namespace std;
int main(){
float f=56.34f;
double d=12.34101;
cout<<(f>>1.0)<<endl;
cout<<(d>>1.0)<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,并出现此错误:
在函数'int main()'中:第7行:错误:类型'float'和'double'到二进制'operator >>'编译的无效操作数由于-Wfatal-errors而终止.
在这里允许在C/C++编译器中右移?我正在使用visual studio 2010.
您不能移动非整数类型.它在C++中是非法的.
如果你想要乘以或除以2的幂,那么就这样做.由于表示它们的方式,移位不像浮点数那样工作.
如果你确实想要移动浮点数的位模式,那么你需要做一些转换,或者使用联合.
union
{
float f;
int i;
} u;
u.f = 56.34f;
u.i >>= 1;
cout << u.f << endl;
Run Code Online (Sandbox Code Playgroud)
但是你得到的价值完全没有意义(你没有除以2).
| 归档时间: |
|
| 查看次数: |
3857 次 |
| 最近记录: |