为什么这在 c++ 中不起作用,但在 python 中工作
Why this is not working in c++ but work in python
这是我的两个代码,我想将我的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)
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]<<" ";
}
在这个 Python 代码中
arr[t]^=arr[-1-t]
其中一个索引将是负数,并被解释为"从数组的末尾",C++没有。因此:
a[l]^=a[-1-l];
将触发未定义的行为 (UB(。这不是一个正确的C++程序。
C++不允许数组的任何负索引。
从你的python语句arr[t]^=arr[-1-t]
,似乎你正在尝试访问最后一个元素。
因此,在C++中,如果您想拥有相同的功能,则可以使用a[t]^=a[(sizeof(a)/sizeof(a[0])) -1 -t]
.
相关文章:
- 代码在main()中运行,但在函数中出现错误
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- 换位表导致测试失败(但在游戏中运行良好)
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 库标题在标题中不可见,但在 cmake build 下.cpp文件中完全可见.为什么?
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- 为什么这在 c++ 中不起作用,但在 python 中工作
- 设备与Visa在Python中工作的通信,但在C 中不进行
- Or-Tools:CPP中琐碎的问题是不可行的,但在Python中起作用
- 使用 swig 在 Python 中分段错误(核心转储),但当我更改变量名称时它可以工作
- 同样的逻辑适用于 c++,但在 python 中不适用于堆栈中的最大值,我的代码中是否缺少一些东西
- Python在调试模式下以C 工作,但在EXE文件中不工作
- 在C++中嵌入Python:在Python脚本中导入模块在一个函数调用过程中有效,但在另一个调用过程中无效
- Tensorflow模型在Python中有效,但在C++中无效
- Regex LookAround 在 python 中工作,但在 C++ 中不起作用
- 我可以在 Python 中创建我的 C++ 对象,但无法访问方法
- 在python ctypes中,"c_ubyte"存在,但"c_ubyte_p"不存在