簡體   English   中英

從“ uint64_t”到“ unsigned int”的轉換

[英]conversion from 'uint64_t' to 'unsigned int'

對於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;
       }
   }
   ...
 }

警告是

warning C4244: 'argument': conversion from 'uint64_t' to 'unsigned int', possible loss of data

這很奇怪,因為至少我確定minv[i]都具有uint64_t變量,這很明顯。

與RC版本有關嗎? 還是背后有我不知道的東西?

編譯器警告的“參數”是v[i] operator[]i參數(請注意,這是在這兩行中的唯一參數)。

operator[]重載的參數類型為size_t 在32位版本中, size_t是32位無符號整數。 將64位無符號i轉換為32位無符號參數類型是一種縮小的轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM