【问题标题】:C++ Simple Converting from Binary to DecimalC++ 简单的从二进制转换为十进制
【发布时间】: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 推土机推平了编辑建议。我手动重新应用了仍然相关的部分。

标签: c++ logic


【解决方案1】:

中,您可以复制结构、联合等,但不能直接复制数组。由于这个原因,您不能返回一个数组并将其分配给另一个数组。

您可以使用std::arraystd::vector 代替somearr[8]。这些 stl 容器可以被复制,从而解决您的问题。

Live Demo here

【讨论】:

    【解决方案2】:

    你做错了一些事情。

    1- 我认为您想为每个十进制数保存数组中的二进制文件。如果你想这样做,你必须使用二维数组。 (例如小数:[2,4,7] 二进制:[[0,1,0],[1,0,0],[1,1,1])

    2- 您以错误的方式使用数组。如果你想将一个数组发送给函数,你必须像这样使用:

    // lets say this is a function takes an array
    void foo(int ex[8]);
    .
    .
    .
    int main() {
    int myArray[8];
    .
    .
    //you must call it like that
    foo(myArray);
    //or
    foo(&myArray[0]);
    

    3- 您返回的是 int 而不是 int[]。也许你想在你的函数中使用一个输出参数,这可能会有所帮助。

    您必须搜索并学习 C++ 中的数组用法。访问http://www.cplusplus.com/doc/tutorial/arrays/

    【讨论】:

      【解决方案3】:

      您正在向函数传递数组外部的指针。此外,您正在从数组中返回一个元素。包含 8 个元素的数组的索引从 0 到 7。此外,您不能将数组作为函数参数传递。 阅读 C++ 教程并重试

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-24
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-30
        相关资源
        最近更新 更多