【发布时间】:2019-05-11 22:13:02
【问题描述】:
我正在学习 C,我遇到了下面的代码。所有printf 调用的打印结果始终相同。
[x,y] 是什么意思?
内存地址还是别的什么?
printf("%d ", array[0,0]);
printf("%d ", array[1,0]);
printf("%d ", array[2,0]);
【问题讨论】:
-
两个字:逗号。很多词:下标表达式包含一个逗号运算符,它计算 LHS(0 或 1 或 2)并丢弃它,然后计算 RHS(总是 0)并用作数组的下标,所以你总是得到相同的打印值 —
array[0]。如果array实际上是某种二维数组,那么array[0]将是一个地址,而不是一个简单的整数值。一个好的编译器每行会产生几个警告——找到将你的编译器转换成一个好的编译器的选项,或者得到一个好的编译器。 -
逗号运算符丢弃左边的结果。
array[0,0]与array[0]相同。 -
三个字:不要那样做。
-
我想如果你按照你应该的方式使用它们,你的编译器会给你警告。对于
gcc,我使用-Wall -Wextra -pedantic,尽管可能会有更好的选择。
标签: c arrays multidimensional-array