![]() |
1
57
简短回答:
|
![]() |
2
84
虽然简短的回答“它不是左值”是 对的 或许这只是个问题。 为什么? 这不是一个 左值 ?或者,正如我们在c中所说,a 变量 . 原因是因为 你不能再吃蛋糕了 . 逻辑地计算出来: 首先,C中的+运算符的含义,无论是后缀还是前缀,都是 获取该变量的值,增加该值,将新值赋给该变量,并生成一个值。 . 结果生成的值要么是原始值,要么是递增值,这取决于它是后缀还是前缀。但不管怎样,你都会产生一个价值。 第二, 变量的值始终是该变量的当前内容 . (模拟一些奇怪的线程场景,这些场景会带我们走得很远。) 我希望你同意这些是完全合理的规则。 现在应该很清楚为什么I++的结果不能是变量,但如果不是,让我澄清一下: 假设我10岁。i++的意思应该是“获取i_10_的值”增加它_11_存储它_“我现在是11_”,并给出结果__10的原始值。所以当你说打印(i++)时,它应该打印10,11应该存储在i中。 现在假设i++的含义是返回 变量 而不是 价值 .你说打印(I++)会发生什么?你得到i_10_的值,增加它_11__,存储它__,我现在是11__),然后返回变量。变量的当前值是多少?11岁!这正是你不想打印的。 简而言之,如果i++返回一个变量,那么它将执行以下操作 恰恰相反 具有操作员的预期含义!你的建议在逻辑上是不一致的,这就是为什么没有语言这样做的原因。 |
![]() |
3
18
因为你关心下一个程序员维护(或试图重写)你的代码,在你因违反流行惯例而被解雇很久之后。 |
![]() |
4
8
我测试了(++i,i++)作为解决方法:
结果:
|
![]() |
5
6
因为结果
|
![]() |
6
3
我认为递增(或递减)运算符需要赋值给左值。然而,++i不是左值,它是一个表达式。精通编译器的人可能能够澄清这种约束是否有技术原因。 |
![]() |
7
3
从第7.5.9节 C# 3.0 specification :
另外,后增量表达式(
|
|
Jehyun · 为什么JavaScript中的值是3?[副本] 7 年前 |
![]() |
StepUp · 为什么“ref”不将更新的值分配给下一个字段? 10 年前 |
|
user1765876 · 在Java中添加后增量 11 年前 |
![]() |
codey modey · 关于岗位增量 11 年前 |