我是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++ 代码,我很感激。
auto array_length = end(queen) - begin(queen);
将其更改为
int array_length = end(queen) - begin(queen);
自动自动选择"多头"。int 和 long 有不同的大小。int 是 32 位长是 64 位