C++ 位移位,表达式必须有一个整数
我正试着把63个位置向左边移动。我一直在获得一个“表达式必须有一个完整的或未被范围化的枚举类型。我对C++是相当新的,所以我确信它是非常简单的。< /P>C++ 位移位,表达式必须有一个整数,c++,visual-studio-2013,C++,Visual Studio 2013,我正试着把63个位置向左边移动。我一直在获得一个“表达式必须有一个完整的或未被范围化的枚举类型。我对C++是相当新的,所以我确信它是非常简单的。< /P> #include <iostream> using namespace std; int sign_bit(double x){ double temp = x << 63; // this is the line that is throwing the error int return_value
#include <iostream>
using namespace std;
int sign_bit(double x){
double temp = x << 63; // this is the line that is throwing the error
int return_value = reinterpret_cast<int>(temp);
return return_value;
}
int main(){
double n = -1.00;
double p = 1.00;
return 0;
}
#包括
使用名称空间std;
整数符号\位(双x){
double temp=x您不能对浮点类型进行位移位。您到底为什么要这样做?请尝试使用整数类型重新执行代码,或强制转换为整数类型,请参见此处:根据错误,您只能对整数类型进行位移位,请尝试静态\u强制转换(x)不能对双精度浮点值进行位移位,因为浮点值的存储形式不同于整数类型。请尝试使用long-long
或int64
。当然,这要求您的平台支持64位整数。@adamless类型的名称是long-long
,而不是int64
,这是必需的通过C和C++标准(我不知道一个现代编译器不支持它,因为它是从C以来需要C99)。