【发布时间】:2019-04-17 19:08:32
【问题描述】:
这段代码有什么问题?我正在使用 GCC 6.3。
a.cpp:在函数“int main()”中:`a.cpp:26:24:错误:将“18446744069414584320ull”从“long long unsigned int”缩小到“int”在{} [-Wnarrowing ]
#include <iostream>
using namespace std;
#include <smmintrin.h>
#include <emmintrin.h>
#include <tmmintrin.h>
typedef union {
__m64 mm64[2];
__m128 mm128i;
} sse2_t;
#define const_epi32( i3,i2,i1,i0 ) \
{ static_cast<unsigned long long> (static_cast<unsigned long long>(i1) << 32), \
static_cast<unsigned long long> (static_cast<unsigned long long>(i3) << 32) }
int main() {
sse2_t arr_val[3] = { const_epi32(0,-1,0,-1),
const_epi32(0, 0,-1, -1),
const_epi32(0, 0,0, 1024)
}; //error!
sse2_t val = const_epi32(0,-1,0,-1); // ok!
// your code goes here
return 0;
}
【问题讨论】:
-
根据错误消息,它正在尝试使用
unsigned long long类型的值初始化int类型的对象,而int太小了。
标签: c++