十进制本身转换为十六进制
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,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]<<" ";
http://ideone.com/G5n4Z with GNU表示其未定义行为
cout<<ar[i,j]<<" ";
将这一行改为:
cout<<ar[i][j]<<" ";
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将十六进制转换为 DEC
- 将字符指针中的十六进制转换为十进制
- 使用 std::hex 将十六进制转换为十进制
- 将40个字节长的数据框从十六进制转换为二进制,然后转换为十进制
- 如何将十六进制转换为十进制
- 在C++中将十六进制转换为uint8_t
- 从十六进制转换为LPCVoid,切断了一半地址
- 将十六进制转换为可打印的字符串/字符
- 将 QString 十六进制转换为 ASCII 值
- 我如何在 C++ 中将变量从十六进制转换为 dec
- 混淆在C++中将十六进制转换为二进制
- C++中的十进制到十六进制转换代码
- 如何在C++中将十六进制转换为IEEE 754 32位浮点
- 十进制到十六进制转换错误
- 十进制到十六进制转换c++内置函数
- 如何将十六进制转换为字符串?C++
- 将 3d 数组元素从十六进制转换为二进制以获得 bmp
- C++:将十六进制转换为十进制
- 将十六进制转换为签名的十二月