【发布时间】:2012-03-03 15:09:53
【问题描述】:
我很想知道在 C 中增加的多维数组的行为如下:
int x[10][10];
y = x[++i, ++j];
我知道那是错误的方式。我只想知道编译器在这种情况下做了什么,如果程序员在他的代码中这样做会产生什么后果。
【问题讨论】:
标签: c multidimensional-array comma comma-operator
我很想知道在 C 中增加的多维数组的行为如下:
int x[10][10];
y = x[++i, ++j];
我知道那是错误的方式。我只想知道编译器在这种情况下做了什么,如果程序员在他的代码中这样做会产生什么后果。
【问题讨论】:
标签: c multidimensional-array comma comma-operator
那是逗号操作符,被误用了。 ++i, ++j 产生 j + 1 的值并有 2 个副作用(修改 i 和 j)。整个事情基本上意味着++i; y = x[++j]。哪个会起作用,取决于y 的类型。
如果程序员在他的代码中这样做会有什么后果
嗯,很可能其他程序员会给他/她凶恶的眼神。
【讨论】:
i)但它的值被丢弃了。在 C 中,每个表达式都有副作用并产生一个值。碰巧在这种情况下,产生的值不依赖于i。但副作用是有的。