[英]Decimal itself converts to hexadecimal
我有小問題。 我創建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;
}
作為回報,我得到了這個http://www.dropmocks.com/mf8wl
那是因為你已經陷入了經營者的狡猾的陷阱,
!
首先,C沒有將多維數組作為原語。 正如您在這里所聲明的,二維數組只是“數組的數組”。 因此,用a[i,j]
訪問數組是沒有意義的。 您應該首先使用a[i]
獲取“行”,然后使用[j]
索引“列”,然后從a[i][j]
。
那么,為什么要編譯代碼? 因為,
是C中的運算符。a a,b
的求值實際上是表達式a
的求值,然后是b
,返回求值b的結果。 因此,您實際上是在這里打印a[j]
,它是一個int[]
,以十六進制形式打印為數組的地址。
為什么運營商,
在所有的,你問? 除了是混亂的,它主要是用於樣構建for
,在那里你可能想在一個初始化劑或增量構建體的多個表達式,即, for (j = 0, i = 0; i + j < k; i++, j += 2)
或類似。
cout << ar[i,j] << " ";
這應該讀
cout << ar[i][j] << " ";
逗號操作符,
不會(從這里 )
逗號運算符(,)用於分隔兩個或多個僅包含一個表達式的表達式。 當必須對一組表達式求值時,僅考慮最右邊的表達式。
因此,這將打印出ar[j]
(在評估i
並丟棄結果之后),它是一個指針,因此是十六進制的。
用於訪問數組成員的C ++語法為:
ar[i][j]
您來自Pascal背景嗎? :P
cout<<ar[i,j]<<" ";
將此行更改為:
cout<<ar[i][j]<<" ";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.