隐式转换失去整数精度:' long'到' int'

时间:2018-01-20 12:26:51

标签: c++ implicit

我是C ++的初学者。我之前学过Python。当使用C ++进行编程时,我的思维始终坚持使用Python的技能。这是我的问题。

int main()
{
   int count ;
   int n1, n2, k, z;
   array<int,8> queen = {1, 7, 4, 6, 4, 5, 0, 4};
   auto array_length = end(queen) - begin(queen);
   count = 0;
   n1 = array_length - 1 ;
   n2 = 1 ;
   while (n1 > 0)
   {
       for (k=0; k < (n1+1) ; k=k+1)
       {
           z = abs(queen[k+n2] - queen[k]);
           if ( z == n2 )
           {
               count += 1 ;
           }
           if ( z == 0 )
               count += 1 ;
           if (( n1 - 1 ) == k)
           {
               n2 += 1 ;
               n1 -= 1 ;

           }
       }
   }
   cout << count << endl;
}

如您所见,我在第8行遇到了一些问题(n1 = array_length - 1 ;).有警告告诉我

Implicit conversion loses integer precision: 'long' to 'int'

这有什么问题?如果你纠正我的c ++代码我很感激。

1 个答案:

答案 0 :(得分:2)

auto array_length = end(queen) - begin(queen);

将其更改为

int array_length = end(queen) - begin(queen);

自动选择'长'。 int和long有不同的大小。 int是32位 long是64位