Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 位移位,表达式必须有一个整数_C++_Visual Studio 2013 - Fatal编程技术网

C++ 位移位,表达式必须有一个整数

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

我正试着把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 = 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)。