【发布时间】:2015-05-23 22:21:43
【问题描述】:
这可行,k 增量:
k = 0;
k = ( false condition here ) ? 0 : k+=1;
这可行,k 增量:
k = 0;
k = ( false condition here ) ? 0 : ++k;
这不行,k 总是 0:
k = 0;
k = ( false condition here ) ? 0 : k++;
谁能解释一下幕后发生了什么?
编辑: 我不需要其他方法来写这个。 我不在乎这是否可以用更简单的方式编写。
在 for 循环中,i++ 或 ++i 都有效。 为什么这里的行为不同?
【问题讨论】:
-
让它更容易...
int k = 0; k = k++;k 仍然是 0。不需要三元数 -
你的讲师有没有教你k++等价于k+=1?我不是在开玩笑。我被教过这个。
-
无论发生什么,都不要将增量与其他任何东西混为一谈。它只会让人们感到困惑,难以阅读而且几乎没有用。
k++或++k一个人就可以了。将它与赋值、算术或上帝禁止的三元或空合并运算符混合在一起,所有的地狱都会崩溃。简短版:这样做会很痛。所以不要这样做。
标签: c# increment ternary-operator