Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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++ 从';uint64';至';无符号整数';_C++_Visual Studio_Comparison - Fatal编程技术网

C++ 从';uint64';至';无符号整数';

C++ 从';uint64';至';无符号整数';,c++,visual-studio,comparison,C++,Visual Studio,Comparison,对于Microsoft Visual Studio 2015 RC中的以下函数,我收到两条关于比较有符号变量和无符号变量的警告 uint64_t findMin(vector<uint64_t> &v) { uint64_t min = 0; uint64_t s = v.size(); for (uint64_t i = 0; i < s; ++i) { if (v[i] != 0) { // WARNING

对于Microsoft Visual Studio 2015 RC中的以下函数,我收到两条关于比较有符号变量和无符号变量的警告

uint64_t findMin(vector<uint64_t> &v)
{
   uint64_t min = 0;
   uint64_t s = v.size();
   for (uint64_t i = 0; i < s; ++i) {
       if (v[i] != 0) {   // WARNING
           min = v[i];    // WARNING
           break;
       }
   }
   ...
 }
这很奇怪,因为至少我确信
min
v[I]
都有
uint64\u t
变量,这是显而易见的

这和RC版有关吗?或者在这背后有我不知道的东西?

编译器警告的“参数”是
v[I]
operator[]
I
参数(请注意,这是这两行中唯一的参数)

运算符[]
重载的参数类型为
size\u t
。在32位构建中,size\u t是32位无符号整数。将64位无符号
i
转换为32位无符号参数类型是一种缩小转换。

编译器警告的“参数”是
v[i]
运算符[]
i
参数(请注意,这是这两行中唯一的参数)


运算符[]
重载的参数类型为
size\u t
。在32位构建中,size\u t是32位无符号整数。将64位无符号
i
转换为32位无符号参数类型是一种狭义转换。

您的常量应具有适当的后缀。默认情况下,文本0是带符号的int。大概size\u t也是uint64\u t?我想这是索引…你的常数应该有适当的后缀。默认情况下,文本0是带符号的int。大概size\u t也是uint64\u t?我在想这是一个索引…大概“for(size_t I=0;Isize\u type,这通常与
size\u t
相同,但不一定如此。@JCx假设我们理解代码的意图,那么方法是完全摆脱函数,使用
std::min\u元素“for(size_t i=0;isize\u type
,它通常与
size\u t
相同,但不一定如此。@JCx假设我们理解代码的意图,那么方法是完全去掉函数并使用
std::min\u元素
是的,我将构建类型更改为X64
warning C4244: 'argument': conversion from 'uint64_t' to 'unsigned int', possible loss of data