十进制本身转换为十六进制

Bła*_*żej 1 c++

我有一个小问题.我创建了2D int数组.当我输入它时,我得到十六进制数字的小数.我正在使用Dev C++.

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
    const int max=9;
    int ar[max][max]={
        {0,6,0,0,2,0,0,4,0},
        {5,0,0,3,0,0,0,0,0},
        {0,8,0,0,1,0,0,0,0},
        {6,0,0,0,0,7,0,0,0},
        {0,3,7,0,0,0,2,8,0},
        {0,2,0,8,0,0,0,3,0},
        {0,0,0,0,0,0,0,0,0},
        {7,0,0,4,0,0,0,0,1},
        {0,0,0,0,6,0,0,2,0}};

    for (int i=0;i<max;i++){
        for(int j=0;j<max;j++){
            cout<<ar[i,j]<<" ";
        }
        cout<<"\n";
    }

    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为回报,我得到了这个http://www.dropmocks.com/mf8wl

Ada*_*ght 9

那是因为你陷入了操作员的狡猾陷阱,!

首先,C没有多维数组作为基元.正如您在此声明的那样,2D数组只是"数组数组".因此,访问数组是没有意义的a[i,j].你应该首先得到"行" a[i]然后索引"列" [j],从那里a[i][j].

那么,为什么你的代码会编译?因为它,是C中的算子.评估a,b有效地是表达式的评估a,然后b,返回评估b的结果.因此,您实际上是a[j]在这里打印,这是一个int[]十六进制打印作为数组的地址.

,你问,为什么要有一个操作员呢?除了令人困惑之外,它主要用于构造,例如for,您可能需要初始化或增量构造中的多个表达式,即for (j = 0, i = 0; i + j < k; i++, j += 2)或类似.