【问题标题】:Wrong multi-dimensional array variables increase in CC中错误的多维数组变量增加
【发布时间】:2012-03-03 15:09:53
【问题描述】:

我很想知道在 C 中增加的多维数组的行为如下:

int x[10][10];

y = x[++i, ++j];

我知道那是错误的方式。我只想知道编译器在这种情况下做了什么,如果程序员在他的代码中这样做会产生什么后果。

【问题讨论】:

    标签: c multidimensional-array comma comma-operator


    【解决方案1】:

    那是逗号操作符,被误用了。 ++i, ++j 产生 j + 1 的值并有 2 个副作用(修改 ij)。整个事情基本上意味着++i; y = x[++j]。哪个会起作用,取决于y 的类型。

    如果程序员在他的代码中这样做会有什么后果

    嗯,很可能其他程序员会给他/她凶恶的眼神。

    【讨论】:

    • 啊哈。第二个问题的答案很好。 +1!! ;)
    • 我只是不明白一件事:在这种情况下 ++i 消失了??
    • @Kyrol 它并没有消失。它仍然被执行(你可以在之后检查i)但它的值被丢弃了。在 C 中,每个表达式都有副作用并产生一个值。碰巧在这种情况下,产生的值不依赖于i。但副作用是有的。
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    相关资源
    最近更新 更多