这是我要将我的python代码转换为c ++的两个代码
下面的Python和C ++代码
if n%2 and k>n//2:
print(n%2,n//2)
arr[n//2]=0
rem=k%(3*n)
for i in range(k-rem,k):
t=i%n
arr[t]^=arr[-1-t]
#print(arr)
print(*arr)
Run Code Online (Sandbox Code Playgroud)
C ++代码
if((n%2!=0) && (k>n/2))
a[n/2]=0;
rem=k%(3*n);
for(i=k-rem;i<k;i++)
{
l=i%n;
a[l]^=a[-1-l];
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
Run Code Online (Sandbox Code Playgroud)
在此Python代码中
arr[t]^=arr[-1-t]
Run Code Online (Sandbox Code Playgroud)
索引之一将为负,并解释为“从数组末尾开始”,C ++则没有。因此:
a[l]^=a[-1-l];
Run Code Online (Sandbox Code Playgroud)
将触发未定义的行为(UB)。这不是正确的C ++程序。