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