下面是我的代码片段
int arr[1][1];
arr[0][0]=55;
arr[0][1]=56;
arr[1][0]=57;
arr[1][1]=58;
printf("\n arr[0,0]=%d",arr[0,0]);
printf("\n arr[0,1]=%d",arr[0,1]);
printf("\n arr[0,2]=%d",arr[0,2]);输出为-12 -10 -8
谁能告诉我arr0,0是什么意思?
发布于 2014-03-31 09:03:49
Q谁能告诉我arr0,0是什么意思?
A arr[0,0]等同于arr[0]。
当您有一系列逗号分隔的表达式时,最后一个表达式的值就是整个表达式的值。作为扩展的例子,
arr[10, 200, 50, 983, 52]等同于arr[52]
正如您在格式说明符中使用%d时所期望的那样,您的程序需要修改以打印一个整数。
printf("\n arr[0][0]=%d",arr[0][0]);如果要打印arr[0][1]和arr[0][2],则需要将arr的定义更改为
int arr[1][3];查看您的新代码
变化
int arr[1][1];至
int arr[2][2];否则,以下行将显示未定义的行为:
arr[0][1]=56;
arr[1][0]=57;
arr[1][1]=58;发布于 2014-03-31 09:05:16
您正在使用逗号运算符。它的计算结果是它的第二个操作数,所以你的代码等同于:
printf("\n arr[0,0]=%d",arr[0]);
printf("\n arr[0,1]=%d",arr[1]);
printf("\n arr[0,2]=%d",arr[2]);这是一种同时以三种不同方式定义的未定义行为:
arr[0]不是一个整数(它是一个整数数组),所以用accesses.1,所以arr[1]和arr[2]是越界的,accesses.要解决此问题,请更改为类似以下内容:
int arr[2][2] = { {1, 2}, {3, 4} };
printf("arr[0][0]=%d\n",arr[0][0]);
printf("arr[1][0]=%d\n",arr[1][0]);
printf("arr[0][1]=%d\n",arr[0][1]);
printf("arr[1][1]=%d\n",arr[1][1]);发布于 2014-03-31 09:07:30
首先关于表达式(0,1)的值:
int chk = (0,1);
printf("%d",chk);这就是你知道(0,1)的值的方法。如果您想了解更多详细信息,请参阅:this。
因此,arr[0,1]与arr[1]相同
https://stackoverflow.com/questions/22751923
复制相似问题