【发布时间】:2014-12-31 08:16:39
【问题描述】:
我试图创建一个将十进制转换为二进制的程序,但遇到了麻烦。看看我有什么,让我朝正确的方向迈进,程序编译但返回负数。我现在正在调试,但一旦编译器命中num 变量,它就会弹出一个负数。
#include <iostream>
using namespace std;
int hexConvert(int* num, int Hexes[8]) {
//int* Hexes[8] = &Hexes[8];
int empty[8];
for(int i = 0; i < 8; i++) {
if(Hexes[i]-*num >= 0) {
*num = (Hexes[i] - *num);
empty[i] = 1;
} else
empty[i] = 0;
}
return empty[8];
}
int Hexes[8] = {128,64,32,16,8,4,2,1};
int main() {
int num = 0;
int here[8];
here[8] = hexConvert(&num,&Hexes[8]);
for (int i = 0; i < 8; i++)
cout << here[i];
}
【问题讨论】:
-
您应该将其发布为 codereview.stackexchange.com
-
int here[8];here[8]=something;是 UB。 -
C++ 中的数组不是这样工作的。
-
@MohitJain:不是 UB,格式不正确。
-
抱歉,我很遗憾地被 Hayden stackoverflow.com/review/suggested-edits/6617527 推土机推平了编辑建议。我手动重新应用了仍然相关的部分。