为什么直接访问时不打印二维数组值
Why it is not printing 2d array value when access directly
#include<stdio.h>
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0,0] );
}
并且输出是一些垃圾值
我在代码块中试过这个
你接近阵列错误
试试这个:
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0][0] );
return 0;
}
您需要使用“[number][number]”从二维数组中获取数字而不是 [number,number]
你声明了一个二维数组
int ans[5][5];
数组的元素类型为int[5]
。因此,例如表达式 ans[0]
给出了这样一个数组。表达式中使用的数组(极少数例外)被转换为指向其第一个元素的指针。因此具有类型 int[5]
的表达式 ans[0]
被隐式转换为类型 int *
指向元素 ans[0][0]
的指针
在这个表达式中
ans[0,0]
在方括号中使用了带有逗号运算符0,0
的表达式。由于带有逗号运算符的表达式的第一个操作数没有副作用,因此上面的表达式等效于 ans[0]
.
也就是说在这个调用中
printf(" why this %d \n\n",ans[0,0] );
相当于
printf(" why this %d \n\n",ans[0] );
您正在尝试使用转换说明符 %d
输出一个指针,该说明符旨在输出导致未定义行为的 int
类型的对象。
你的意思好像是
printf(" why this %d \n\n",ans[0][0] );
或
printf(" why this %d \n\n", **ans );
或
printf(" why this %d \n\n", *ans[0] );
或
printf(" why this %d \n\n", ( *ans )[0] );
至于逗号运算符则只需考虑以下代码片段
int i = 0;
ans[0][0] = ( ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i );
其结果相当于以下代码片段
int i = 10;
ans[0][0] = i;
#include<stdio.h>
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0,0] );
}
并且输出是一些垃圾值 我在代码块中试过这个
你接近阵列错误 试试这个:
int main(){
int i,j;
int ans[5][5];
ans[0][0] = 10;
printf(" why this %d \n\n",ans[0][0] );
return 0;
}
您需要使用“[number][number]”从二维数组中获取数字而不是 [number,number]
你声明了一个二维数组
int ans[5][5];
数组的元素类型为int[5]
。因此,例如表达式 ans[0]
给出了这样一个数组。表达式中使用的数组(极少数例外)被转换为指向其第一个元素的指针。因此具有类型 int[5]
的表达式 ans[0]
被隐式转换为类型 int *
指向元素 ans[0][0]
在这个表达式中
ans[0,0]
在方括号中使用了带有逗号运算符0,0
的表达式。由于带有逗号运算符的表达式的第一个操作数没有副作用,因此上面的表达式等效于 ans[0]
.
也就是说在这个调用中
printf(" why this %d \n\n",ans[0,0] );
相当于
printf(" why this %d \n\n",ans[0] );
您正在尝试使用转换说明符 %d
输出一个指针,该说明符旨在输出导致未定义行为的 int
类型的对象。
你的意思好像是
printf(" why this %d \n\n",ans[0][0] );
或
printf(" why this %d \n\n", **ans );
或
printf(" why this %d \n\n", *ans[0] );
或
printf(" why this %d \n\n", ( *ans )[0] );
至于逗号运算符则只需考虑以下代码片段
int i = 0;
ans[0][0] = ( ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i, ++i );
其结果相当于以下代码片段
int i = 10;
ans[0][0] = i;